八进制

少年壮志无烟抽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  244 随笔 :: 0 文章 :: 3241 评论 :: 14 引用

组合查询功能,原先使用<html:form>缺省是以POST方式提交的,增加了分页功能后,由于要在URL里记住用户提交的查询内容(例如:http://localhost:8080/aims/client/filter.do?name=%E5%BC%A0&address=%E5%8C%97%E4%BA%AC&title=&duty=&departmentCode=10000001&categoryCode=10000002&fieldCode=10000006&genderCode=&identityCode=),所以表单的提交方式要改为GET。

只是简单的改为method="GET",但这样一改却让action无法得到正确的输入值,例如用户在姓名条件里输入“张”,在action里用theForm.getName()会得到形如“%A4”的乱码,不仅查询结果是错误的,而且在重新显示的查询表单的姓名栏里也显示出乱码。

我试了很多种转码也没转成原来的值,问了很多朋友,最后的解决方式还是通过转换编码,是把ISO8859-1转为UTF-8,即String name=new String(theForm.getName().getBytes("ISO8859-1"),"UTF-8");,注意我的应用程序里已使用了encoding为UTF-8的Filter。

虽然要加手工转码的代码很不爽,但只在这一处而已,也不碍大事。只是我现在的环境是Tomcat+Mysql,不知道换到其他服务器上会不会重新出现乱码问题,好在这个项目不需要考虑这个问题。

据说Tomcat处理POST和GET的请求时处理编码的方式不太一样,我还看到有篇帖子说要在server.xml的<Connector>里加URIEncoding="GBK"属性,但我试了不起丝毫作用。

posted on 2004-12-14 19:40 八进制 阅读(3701) 评论(5)  编辑 收藏 网摘 所属分类: Java

评论

呵呵.我最近也遇到乱码的问题.我的解决方法是在提交前把表单里的数据用jscript中的函数全部编码成utf-8后(确切说应该是Unicode)提交.具体可以看http://blog.csdn.net/flylyke/archive/2004/12/20/222533.aspx
下面还有一个兼容低版本浏览器的做法.

  回复  引用    

#2楼 2005-01-12 09:07 Syoyo[未注册用户]
Tomcat+mysql的确需要转换,因为mysql不支持unicode,可以写个方法转换。

  回复  引用    

#3楼 2005-04-11 17:28 wolfcry
tomcat 5.0 可以直接支持转码
  回复  引用    

#4楼 2007-06-07 17:44 uko[未注册用户]
据说Tomcat处理POST和GET的请求时处理编码的方式不太一样,我还看到有篇帖子说要在server.xml的<Connector>里加URIEncoding="GBK"属性,但我试了不起丝毫作用。

-------------------------
不是tomcat处理post和get不一样. 是浏览器发送的时候数据编码不一样.
ie浏览器默认使用utf8编码发送url请求,所以当你用get的时候,汉字就被编码成了utf8了.而当你用post发送的时候并没有使用utf8编码

  回复  引用    

#5楼 2007-08-20 09:18 jhvhmh[未注册用户]
你没有试过输入单个汉字,他转能转过来吗?
  回复  引用    

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 77129


相关文章:

相关链接: