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

经典中文乱码问题求解
今天遇到用url地址转换中文:
ssh

tomcat server.xml  

URIEncoding="UTF-8"

web.xml 

  <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>

url:请求:

msg=%B2%E2%CA%D4%B6%CC%D0%C5%BB%D8%B8%B4

System.out.println(URLEncoder.encode("测试短信回复", "GBK"));

后台获取到msg为为乱码 。

乱码 encoding web.xml tomcat url

------解决方案--------------------
楼主是在分享是吧
------解决方案--------------------
楼主是不是用模拟器测试的?模拟器解码就是乱码,这就是个BUG,用真机就好了。。
至于如果是web服务的解决方式:
http://blog.csdn.net/rzleilei/article/details/10019527
------解决方案--------------------
解决方法:
    前台页面对传入的参数两次加密:( encodeURI(encodeURI(parameter))
    后台程序对接受的参数两次解密:URLDecoder.decode()

 如下:
   前台:location.href="<%=_path_%>/home/home_test.do?msg="+encodeURI(encodeURI(msg));
   后台:String msg= URLDecoder.decode(request.getParameter("msg"), "Utf-8");

原理:
      URLEncoder.encode(URLEncoder.encode("汉字","utf-8"),"utf-8")
------解决方案--------------------
哈哈……在action中获取的时候转一下就可以了…在set方法中将Tomcat默认的iso_8859-1转为gbk就ok了