经典中文乱码问题求解
今天遇到用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为为乱码 。
------解决方案--------------------楼主是在分享是吧
------解决方案--------------------楼主是不是用模拟器测试的?模拟器解码就是乱码,这就是个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了