jsp数据提交至servlet中文乱码

java 同时被 2 个专栏收录
22 篇文章 0 订阅
7 篇文章 0 订阅

【出现乱码的原因】   

     首先无论使用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");


  • 2
    点赞
  • 2
    评论
  • 1
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值