您的位置:首页 > 其它

get和post方式提交中文乱码问题解决方案

2014-08-17 13:29 671 查看
【出现乱码的原因】
首先无论使用get方式提交,还是post方式提交,如果参数中包含中文,浏览器都会使用当前浏览器编码对其进行URL编码,然后服务器端再进行URL解码,如果浏览器提交数据的编码和服务器接收数据的编码格式不一致,那么就有可能产生中文乱码。在ie中可以通过菜单栏--查看---编码查看编码格式。
【post方式提交乱码解决方法】
对于表单中POST方式提交的数据,只要在接收数据的JSP中正确request.setCharacterEncoding参数,即将对客户端请求进行重新编码的编码设置成浏览器编码,就可以保证得到的参数编码正确。
request.setCharacterEncoding(myEncoding ); request.setCharacterEncoding(myEncoding)的作用是设置对客户端请求进行重新编码的编码。该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。
另外还有一点需要注意:
request.setCharacterEncoding(myEncoding)和response.setCharacterEncoding(myEncoding )
的区别,前者是浏览器提交到后台时对提交的数据设置编码,后者是后台发送数据到浏览器时对

对于发送数据,设置编码。
【get方式提交乱码解决方法】(参考汤阳光OA)
方案一:

str = new String(str.getBytes("ISO-8859-1"),"UTF-8"),这种方式的大概意思,道说是先把str按照“ISO-8859-1”编码格式拆分成数组,再转为GBK格式组合起来。(这种方式有的情况下不能转换好。不推荐)
方式二:
在tomcat服务器中修改server.xml:URIEncoding="utf-8",因为在Tomcat5.0中和以后,默认情况下使用ISO-8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码。方式三(不依赖Tomcat的配置,推荐): 浏览器中两次URL编码。 服务器中自己再做一次URL解码。因为参数中包含中文,浏览器都会使用当前浏览器编码对其进行URL编码,然后服务器端再进行URL解码。如果首先将中文编码,然后再传到服务器端那么就不会出现乱码错误了。



jsp页面代码如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息