分类: Java
2008-05-26 10:38:50
pageEncoding="GBK" contentType="text/html;charset=GBK"
这样我们提交的汉字被认为是ISO-8859-1的编码,所以在程序中接收时显示乱码,如果使用过滤器,在过滤器中调用request.setCharacterEncoding("GBK")的话,那么Post上来的汉字将被认为是GBK编码,而Tomcat5对于Get请求上来的编码并不根据过滤器的设定辨认编码方式,默认的依然是ISO-8859-1,Tomcat5中处理Get请求的源代码如下: 上面的代码中,enc代表Tomcat5中server.xml中Connector部分的URIEnocodeing项设定的值,可以看出,如果没有设定URIEncoding项的话,那么Tomcat5也并没有使用默认的ISO-8859-1编码,而是一段fast conversion,所以,即使你的页面使用默认的编码方式进行编码,然后使用ISO-8859-1进行解码,得到的结果也不对,这可能是Tomcat5的一个Bug。如果想绕过这个Bug,那么只有在server.xml的Connector部分设定URIEncoding的值,根据编码方式指定自己的值,在我的程序中我使用的是GBK,所以我修改后的部分如下: acceptCount="100"
和
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
只在显示汉字时有用,而且这2种写法的作用在理论上应该时一致的,但是由于各个软件厂商对Web标准都按照自己的理解进行了修改,所以,常常这2种写法作用就不一致了,使我们在开发Web程序时备感混乱。如果你想了解详情,请查看《网站重构》一书。
connectionTimeout="20000"
disableUploadTimeout="true"
port="80"
redirectPort="8443"
enableLookups="false"
minSpareThreads="25"
maxSpareThreads="75"
maxThreads="150"
maxPostSize="0"
URIEncoding="GBK">