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 。
这个问题也是导致前两天我更新程序时导致乱码的根本原因。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。