常見開發需求之js處理url漢字編碼中的亂碼


需求及解決

  

  兩個頁面傳值的需求是很常見的,angular中有很多常見的方法用於傳值,而且都不會受到字符編碼的影響,而采用傳統的url中拼字符串進行傳值的操作,如果拼串中涉及到中文字符,我們就要考慮頁面的編碼問題了。


  如如下的地址

http://www.xxx.com/ddd?type=10&gn=你好

經過url編碼轉變為

http://www.xxx.com/ddd?type=10&gn=%E5%81

從而導致如果直接獲取這個值會出現異常顯示

 

通常我們要解決兩個問題:

 

  • 將search部分可能存在編碼的字符串從地址中提取出來,如需要處理編碼的其實就只是gn這個參數
  • 判斷該字符串是否進行了編碼,並對其進行操作

 

網上有很多方法,使用起來效率不高而且還報錯,我這里總結了一個可用的,代碼如下:

 

//傳入可能出現編碼的key值,返回相應的value
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if(r != null) return(r[2]);
        return null;
}

//測試用的數據
var gn = GetQueryString("gn");

//判斷gn是否編碼,如果編碼了就進行解碼
if(!(gn.indexOf( "%" )<0)) {
    gn = decodeURI(gn);
}

 

核心原理是使用正則匹配,然后判斷字符串是否以%開頭,所以這種方法只適用於url編碼的問題,其他編碼大家自行修改就成。


免責聲明!

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



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