jsp数据提交至servlet中文乱码

来源:互联网 发布:阿里云有香港主机 编辑:程序博客网 时间:2024/06/11 10:13

【出现乱码的原因】   

     首先无论使用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.xmlURIEncoding="utf-8",因为在Tomcat5.0中和以后,默认情况下使用ISO-8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码。

方式三(不依赖Tomcat的配置,推荐):

  浏览器中两次URL编码。

  服务器中自己再做一次URL解码。

因为参数中包含中文,浏览器都会使用当前浏览器编码对其进行URL编码,然后服务器端再进行URL解码。如果首先将中文编码,然后再传到服务器端那么就不会出现乱码错误了。

wKiom1PwOrOiDWTlAABYji5o7is217.jpg


jsp页面代码如下:

wKioL1PwPQSwRxcEAACbUukXLXo126.jpg


var name=encodeURI($('#inputJobName').val());var name=encodeURI(name);$.ajax({ url:"/Newbigdata/NewJobFromTableServlet?jobname="+name,        success: function(data) {        window.location=data;        },        error:function(){        alert('error!');        }            }); 

request.setCharacterEncoding("UTF-8");String jname=URLDecoder.decode(request.getParameter("jobname"),"utf-8");


1 0
原创粉丝点击