struts中文乱码

  get方法传中给struts2 action时出现中文乱码

  描述:前台和后台的java都采用utf-8编码,但是用get方式提交中文参数给action时就会出现乱码。

  问题背景:自从Tomcat5.0开始,get和post方式提交的信息,Tomcat采用不同的方式进行处理编码。对于post的请求,Tomcat仍然使用request.setCharacterEncoding方法所设置的编码来处理,如果未设置,则会使用默认的iso-8859-1编码,如果出现乱码,用request.setCharacterEncoding("TUF-8");

  String name=new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8");这两种方式即可解决。

而get请求则不同,Tomcat对于get请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会使用iso-8859-1编码,而出错使用的正好是get请求,因此,tomat将会使用iso-8859-1将提交的字节转换成字符串。

解决方法:

为了保证tomcat对于get请求采用utf-8进行编码,在tomcat/conf/server.xml中的 

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />中添加红色部分内容即可!

(可是当我添加的时候仍然出现乱码,而在修改的时候未出现乱码。

  最后在struts.xml中添加<constant name="struts.i18n.encoding" value="UTF-8"/> ,则未出现乱码

 

 

posted @ 2012-04-25 10:00  乞丐  阅读(312)  评论(0编辑  收藏  举报