开发进行时...

crazy coder

Avatar

Tomcat get提交的乱码问题

以前一直用WebSphere 和WebLogic一直没有相关的问题,最近用Tomcat也得要熟悉一下...

做了这么长时间的WEB应用,对于编码问题是一直注意的,页面encode为UTF-8,文件保存编码也是UTF-8;也加了filter setCharacterEncoding("UTF-8")了。

但是提交的数据还是乱码,检查了几次都觉得不应该有问题。google了一下才发现Tomcat5+已经把get和post分开处理了,其设置编码方式也有所不同。
根据
http://tomcat.apache.org/tomcat-5.0-doc/config/http.html

得需要设置URIEncoding & useBodyEncodingForURI
否则默认编码方式为"ISO-8859-1"

结果server.xml中的配置改动如下:

<Connector
port="8080"
maxHttpHeaderSize="8192"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
/>

附:
在J2EE规范中并没有发现有URIEncoding这一设置(如request.setCharacterEncoding("GBK")),如果这种设置只能在容器(Server)一级去设置,岂不是所有应用都得同一编码方式? 实现怎么想的?confused...

编码问题越想越乱。。。恐怖。

最好的办法就是从代码到应用全都utf-8。

太乱。。。

评论已关闭