JS傳值中文亂碼解決方案


JS傳值中文亂碼解決方案

一、相關知識

1,Java相關類:

(1)java.net.URLDecoder類

  HTML格式解碼的實用工具類,有一個靜態方法:public static  String  decode(String   變量名,String   編碼格式);給變量指定解碼。

(2)java.net.URLEncoder類

  HTML格式編碼的實用工具類,有一個靜態方法:public static  String  encode(String   變量名,String   編碼格式);給變量指定編碼。

2,JavaScript的編碼函數:

  encodeURI(String  URIstring):把字符串作為 URI 進行編碼。

二、解決JS傳值中文亂碼

1,問題:

  js在url中傳值,前台和后台編碼不一致,導致中文亂碼;

2,解決方案:

(1)方案一:

前台:js代碼使用encodeURI()函數:url = encodeURI(url);注意:這里是整個URL地址,也可以是具體亂碼變量。

后台:java代碼String linename = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"); 

(2)方案二:

前台:jsp代碼對url使用兩次encodeURI()函數:url=encodeURI(encodeURI(url));//用了2次encodeURI

后台:java代碼使用java.net.URLDecoder.decode(String  變量,String  編碼);對指定變量解碼

三、示例

前台:

var yhdh = encodeURI(yhdh);
top.Dialog.open({
URL : "user.do?ywtype=loadXq&type=update&user.yhdh=" +encodeURI(yhdh),   //兩次使用encodeURI()函數(這是js函數)

后台:

try {
    String searchtext =java.net.URLDecoder.decode(userForm.getUser().getYhdh(),"UTF-8");  //進行解碼,會拋異常,直接捕獲即可。
    userBean.setYhdh(searchtext);
} catch (UnsupportedEncodingException e) {
  e.printStackTrace();
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM