request.setCharacterEncoding("UTF-8"); 上面这个方法,相信所有用Java编写web应用的时候都会用过。但是你知道这个方法使用上有什么注意事项吗? 你必须让这个方法在所有 getParameter 和 getParameterXxxx 之前调用,如果你的代码有如下行为: String id = request.getParameter("id"); request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); 假设这个name是一个中文参数,那么在IE浏览器下,name值就是乱码,而 FireFox 正常。 我在 Tomcat 和 Resin 下都测试过这个问题,一样的效果。 因此,你必须保证 setCharacterEncoding 在获取参数之前被调用,否则无效。 至于为什么 FireFox 是正常的,而 IE 则不行呢? 你不妨跟踪一下 request.getCharacterEncoding 这个方法的返回值,在 FireFox 下返回 utf-8 ,而IE返回的是 null 。 这个问题也是导致前两天我更新程序时导致乱码的根本原因。
最好的办法是在Connector配置中加上URIEncodeing="utf-8"参数######
最好的办法是在Connector配置中加上URIEncodeing="utf-8"参数
这个参数只是tomcat的吧,那如果我要用resin或jetty怎办??? 最好还是程序层面做,适应所有应用服务器, 最后红薯大哥是怎解决的呢????先得到request 的 encoding??如果为空就给他一个默认值?######
这个参数只影响 GET 方式的中文参数,对 POST 方式是无效的。######
public void setCharacterEncoding(java.lang.String env) throws java.io.UnsupportedEncodingException
a
-
String
containing the name of the chararacter encoding.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。