当前位置: 代码迷 >> Web前端 >> Get传递中文时出现乱码有关问题解决方法
  详细解决方案

Get传递中文时出现乱码有关问题解决方法

热度:32   发布时间:2012-11-06 14:07:00.0
Get传递中文时出现乱码问题解决办法
1,首先要配置页面的请求编码:<%request.setCharacterEncoding=”utf-8”%>

2,修改tomcat下的server.xml中的connector节点,添加useBodyEncodingForURI="true" 和URIEncoding=”UTF-8”;变成如下的形式:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" URIEncoding=”UTF-8”/>
因为:server.xml的Connector节点增加useBodyEncodingForURI="true"
属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码。所以自动编码为utf-8,接受页面正常接受就可以了。但我认为真正的编码过程是,tomcat又要根据
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" URIEncoding=”UTF-8”/>
里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会有变化了。如果是从url获取编码,接受页面则是根据
URIEncoding=”UTF-8”来进行解码的。

3,如果这样的设置还是会出现乱码的话,还可以进行下面的设置:传参前将该中文字符使用   URLEncoder.encode( <你的参数内容> , "UTF-8 ")   进行处理一下,再进行传递基本上就可以解决了。在   Firefox   身上基本上不会发生,因为它会自动将非   ISO-8859-1   字符转为该字符的表现形式。
别忘了导入  <%@page import= "java.net.URLEncoder " %>   包。(这种情况是,传递偶数中文时好着,但传递奇数中文时乱码)
  相关解决方案