日期:2014-05-17  浏览次数:20785 次

让人想死的中文编码问题
我在jsp页面传值到action里面(用的是struts1)。jsp页面设置的是charset=UTF-8,表单提交方式是post。
到了action里面String name=request.getParameter"userName");
String pwd=request.getParameter("userPwd");两个都是乱码。然后我在接收数据前加一句request.setCharacterEncoding("UTF-8");在接收显示还是乱码。把我弄毛了。我干脆写个FORM类把表单值用FORM接收,UserForm uf=(UserForm)form;System.out.println(uf.getUserName()+"\t"+uf.getUserPwd());可是这样还是出编码问题。我最后实在无语了。无语到只能用笨方法把每个接收的值再这样一下。new String(name.getBytes("ISO-8859-1"),"UTF-8");编码问题,这才宣告解决。各位大神,不知道解决中文编码问题,有没有比这更简单的没有。这实在是太麻烦了

------解决方案--------------------
写一个通用的过滤器处理中文乱码问题,把它放到struts1拦截器前面,方便以后使用!
------解决方案--------------------
jsp页面设置的是charset=UTF-8,表单提交方式是post。

--这种方式不会乱码。

new String(name.getBytes("ISO-8859-1"),"UTF-8");编码问题,这才宣告解决。

--那非常可能是你压根就没用form传值,直接url拼串或者location="**?a=张三&..."
------解决方案--------------------
1.可以改成post提交
2.或者修改服务器的uri编码。找到tomcat下的server.xml,修改:
<Connector connectionTimeout="20000" maxThreads="150" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

<Connector URIEncoding="UTF-8" connectionTimeout="20000" maxThreads="150" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
即添加URIEncoding="UTF-8"