js获取url中文乱码问题解决方案

js合成url时,如果参数是中文,传到struts2中会乱码,解决办法如下:
1.js文件中使用encodeURI()方法(必须套两层)。
login_name = encodeURI(encodeURI(login_name));  

2.action中URLDecoder解码
loginName = java.net.URLDecoder.decode(loginName,"UTF-8"); 
-------------------------------------------------------------------------------------

实际应用如下queryPrice()方法:

Java代码   收藏代码
  1. 1)js代码:  
  2. /*模糊查询价格策略*/  
  3. function queryPrice()  
  4. {  
  5.     var checkMoney = true;  
  6.     var textMoney = $("#textMoney");  
  7.       
  8.     var textArea = $("#textArea");//地区错误提示位置  
  9.       
  10.     /** 
  11.      * 点击查询,判断至少选择了一个面值,否则不能查询 
  12.      */  
  13.     var obj = document.getElementsByName("money");  
  14.     for( var i=0; i
  15.     {  
  16.         if(obj[i].checked)  
  17.         {  
  18.             checkMoney = true;  
  19.             break;  
  20.         }  
  21.         else  
  22.         {  
  23.             checkMoney = false;  
  24.         }  
  25.     }  
  26.       
  27.     if( ($("#Area_a").val() != 'no') && ($("#Area_b").val() != 'no') && checkMoney == true )  
  28.     {  
  29.         var checkText=$("#Area_b").find("option:selected").text();//###这里得到select被选中option的text  
  30.         var Area_b_text = encodeURI(encodeURI(checkText));  
  31.         $("#form1").attr("action","priceStrategy_querAllPriceStrategy2?Area_b_text="+Area_b_text);  
  32.         $("#form1").submit();  
  33.     }  
  34.     else  
  35.     {  
  36.         textArea.html("选择地区!");  
  37.         textMoney.html("
    至少选择一种面值!"
    );  
  38.     }  
  39. }  

 

 

Java代码   收藏代码
  1. 2)jsp页面  
  2.     1 width="100%">  
  3.           
  4.             "3">查询操作  
  5.           
  6.           
  7.               
  8.                 地区:  
  9.               
  10.               
  11.                 "Area_a" name="Area_a" size="1" οnchange="getAllCityOrProvince()">  
  12.                       
  13.                         "${ Area_a == 'nei' }">  
  14.                             "no">==请选择==  
  15.                             "nei" selected="selected">省内  
  16.                             "wai">省外  
  17.                           
  18.                         "${ Area_a == 'wai' }">  
  19.                             "no">==请选择==  
  20.                             "nei">省内  
  21.                             "wai" selected="selected">省外  
  22.                           
  23.                           
  24.                             "no" selected="selected">==请选择==  
  25.                             "nei">省内  
  26.                             "wai">省外  
  27.                           
  28.                       
  29.                   
  30.                 "Area_b" name="Area_b" size="1">  
  31.                       
  32.                         "${ Area_b_text != null }">  
  33.                             "${ Area_b }">${ Area_b_text }  
  34.                           
  35.                           
  36.                             "no">      
  37.                           
  38.                       
  39.                   
  40.               
  41.             "textArea">  
  42.           
  43.           
  44.               
  45.                   
  46.               
  47.               
  48.                 "button" value=" 查询 "  οnclick="queryPrice()"/>           
  49.                 "button" value=" 重置 " οnclick="resetQueryPrice()"/>  
  50.               
  51.                
  52.           
  53.       

 

 

Java代码   收藏代码
  1. 3)struts2的Action中getter方法这样设置:  
  2. private String Area_b_text;//第二个select中的text  
  3. public void setArea_b(String areaB) {  
  4.       
  5.     Area_b = areaB;  
  6. }  
  7. public String getArea_b_text() throws UnsupportedEncodingException {  
  8.       
  9.     return java.net.URLDecoder.decode(Area_b_text,"UTF-8");//前台获得时自动转为UTF-8编码格式  
  10. }  

 

=====================================================================================

###其他资料

url传递中文
如果jsp页面,myeclipse、web.xml中org.springframework.web.filter.CharacterEncodingFilter,都是UTF-8编码,
直接传中文一般是不会乱码的,如果再有乱码,可以用以下的方式试试。
目前收集到4中方法,中文传参一documentPath为例:
1.改为form方式提交,不用超链接方式提交,用form方式传参指定不乱码。

2.通过encodeURI(encodeURI(checkText))提交,java代码中用URLDecoder.decode解码:

java代码中取中文:
String documentPath = (String) request.getParameter('documentPath');
documentPath = URLDecoder.decode(documentPath,"utf-8");

3.修改tomcat的server.xml中的connector,添加URLEncoding="UTF-8"

4.中文从java中传到jsp再通过url传到java:
java中编码:URLEncoder.encode(URLEncoder.encode("传递的中文","utf-8"));
java中解码码:URLDecoder.decode(request.getParameter('documentPath'),"utf-8");

你可能感兴趣的:(js获取url中文乱码问题解决方案)