1. 程式人生 > >HTML獲取連結中的引數(解決中文亂碼問題)

HTML獲取連結中的引數(解決中文亂碼問題)

這是之前在網上找的一個HTML頁面獲取連結後面的引數的例子,本人覺得寫的很好,一直在用,下面貼上上js原始碼:

var LocString=String(window.document.location.href);
 function GetQueryString(str){
 var rs=new RegExp("(^|)"+str+"=([^&]*)(&|$)","gi").exec(LocString),tmp;
 if(tmp=rs)return tmp[2];
 return "沒有這個引數";
 }
 alert("日記名稱:"+GetQueryString("name"
)); alert("分類編號:"+GetQueryString("hehe")); alert("所在頁數:"+GetQueryString("hh"));

相信大家一看就懂了,但是這裡面還涉及到一個問題就是如果連結中存在中文的話,會自動被轉碼。
取中文引數需要解碼,比如上面的日記名稱如果是中文的話:

var name= decodeURI(GetQueryString("name"));
alert("日記名稱:"+name);

這樣alert的值才是中文的。順便普及兩個知識點,上面說的連結中的中文會被自動編碼。其實我們也可以自己手動進行編碼,防止在中文資料在傳輸變亂碼。
這裡就涉及到java和js的兩種轉碼方式,其實用的方法都是一樣的。
Java方法:

java.net.URLDecoder.decode(URIString, "UTF-8");  //按照utf-8進行解碼
java.net.URLEncoder.encode(URIString, "UTF-8");  //按照utf-8進行編碼

js方法

decodeURI()  //解碼
encodeURI()  //編碼

這裡encodeURI()方法的結果和連結裡面自動編碼的結果是一樣的。