Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62892
  • 博文数量: 21
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-18 17:58
文章分类

全部博文(21)

文章存档

2011年(1)

2009年(1)

2008年(19)

我的朋友
最近访客

分类: Java

2008-05-26 10:38:50

我在项目开发中,使用displaytag的过程仲发现,分页地址冗长,最终导致URL无法访问!就像excelname=%D7%A8%D2%B5%C3%FB%B3%D7%A8%D2%B5%C3%FB%B3%D7%A8%D2%B5%C3%FB%B3%D7%A8%D2%B5%C3%FB%B3%
问题的根源:

pageEncoding="GBK" contentType="text/html;charset=GBK"

<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
只在显示汉字时有用,而且这2种写法的作用在理论上应该时一致的,但是由于各个软件厂商对Web标准都按照自己的理解进行了修改,所以,常常这2种写法作用就不一致了,使我们在开发Web程序时备感混乱。如果你想了解详情,请查看《网站重构》一书。

这样我们提交的汉字被认为是ISO-8859-1的编码,所以在程序中接收时显示乱码,如果使用过滤器,在过滤器中调用request.setCharacterEncoding("GBK")的话,那么Post上来的汉字将被认为是GBK编码,而Tomcat5对于Get请求上来的编码并不根据过滤器的设定辨认编码方式,默认的依然是ISO-8859-1Tomcat5中处理Get请求的源代码如下:

上面的代码中,enc代表Tomcat5server.xmlConnector部分的URIEnocodeing项设定的值,可以看出,如果没有设定URIEncoding项的话,那么Tomcat5也并没有使用默认的ISO-8859-1编码,而是一段fast conversion,所以,即使你的页面使用默认的编码方式进行编码,然后使用ISO-8859-1进行解码,得到的结果也不对,这可能是Tomcat5的一个Bug。如果想绕过这个Bug,那么只有在server.xmlConnector部分设定URIEncoding的值,根据编码方式指定自己的值,在我的程序中我使用的是GBK,所以我修改后的部分如下:

acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
port="80"
redirectPort="8443"
enableLookups="false"
minSpareThreads="25"
maxSpareThreads="75"
maxThreads="150"
maxPostSize="0"
URIEncoding="GBK">

 
阅读(1002) | 评论(0) | 转发(0) |
0

上一篇:追忆的痛

下一篇:ajax 级联菜单

给主人留下些什么吧!~~