码迷,mamicode.com
首页 > Web开发 > 详细

利用jQuery 解决URL请求参数有中文时出现乱码的问题

时间:2014-08-13 14:59:46      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:javascript   javaee   urlt乱码   encodeuri   

   利用jQuery 解决URL请求参数有中文时出现乱码的问题

        在开发的时候经常会碰到URL中请求参数含有中文的情况,这时如果在前台不作处理,直接在后台利用request.getParameter()拿对应的参数值就会出现中文乱码。

        这时可以先利用jQuery对对应中文进行encodeURI(),例子如下:

前台对应代码

<!--省畋无关代码-->

<input type="button" id="submitA" value="重发短信"/>

<a id="dataA" style="display:none;"><span id="clickA"> 重发短信</span></a>

<!--${ordersSn} 和${itemName}是利用Freemarker从后台得到的值,其中itemName为订单名为中文-->

<input type="text" value="${ordersSn}" class="spanordersSn" style="display:none;"/>

<input type="text" value="${itemName}" class="spanitemName" style="display:none"/>

<!--省畋无关代码-->

<script type="text/javascript"> 

  $(function(){

  $("#submitA").click(function(){

  var ordersSn=$(".spanordersSn").val();

  var itemName=$(".spanitemName").val();

  var url="member_order.html?           isShotMassege=yes&ordersSn="+ordersSn+"&itemName="+ encodeURI(encodeURI(itemName));

  $("#dataA").attr("href",url);
  $("#clickA").trigger("click"); 
  });
  });
</script>

<!--省畋无关代码-->

        后台对应代码

  String itemName=request.getParameter("itemName");

      try{

 itemName= java.net.URLDecoder.decode(itemName,"utf-8");

}catch(UnsupportedEncodingException e){

 e.printStackTrace();

     }

可以看到在前台itemName中文参数利用了encodeURI(encodeURI(itemName))进行编码,在后台利

 java.net.URLDecoder.decode(itemName,"utf-8")这进解码

前台为什么要进行两次encodeURI,而后台只有一次decode呢?

第一次编码的作用是将多字节字符转变成纯粹的 Ascii 字符串(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的) 再编一次后,提交,接收时容器自动解一次(容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])然后,再在程序中实现一次Java中通常使用 java.net.URLDecoder(***, "UTF-8") 就可以得到想提交的参数的原值。



 



利用jQuery 解决URL请求参数有中文时出现乱码的问题,布布扣,bubuko.com

利用jQuery 解决URL请求参数有中文时出现乱码的问题

标签:javascript   javaee   urlt乱码   encodeuri   

原文地址:http://blog.csdn.net/oqqyeyi/article/details/38535845

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!