URL代參數

  • 4789
  • 0
  • 2010-11-26

URL傳中文參數時,請使用Server.UrlEncode將它包起來,但最好是傳代碼不要傳中文字。

 

當要用URL傳中文參數時,請使用Server.UrlEncode將它包起來,否則會有編碼上的錯誤:
 
string strUrlCity = "&City=" + Server.UrlEncode(“台北市”);
 
而接收時它會自動回復為中文字:
 
HidCity.Value = Request.QueryString["City"];
 
但最好是傳代碼不要傳中文字。
 
 而JavaScript中的語法為:
 
var strUrlCity = "&City=" + encodeURIComponent(document.getElementById(strCity).value);
 
javascript 常用的編碼格式有escape(), encodeURL(), encodeURIComponent()
escape():
    將字串轉換為%xx,但不會被編碼的有:@ * / +
encodeURL():
    將字串轉換為escape格式的字符串,但不會被編碼的有:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent():
    將字串轉換為escape格式的字符串,但不會被編碼的有:! * ( ) '
 
所以最好是用encodeURIComponent()來做轉換,但當是要轉換整個URL的話則要用encodeURL(),這樣它才不會把/轉掉造成URL的錯誤。對於中文字符串來說,如果不希望把字符串編碼格式轉化成UTF-8格式的時候(比如原頁面和目標頁面的charset是一致的時候),只需要使用escape。如果你的頁面是GB2312或者其他的編碼,而接受參數的頁面是UTF-8編碼的,就要採用encodeURI或者encodeURIComponent。
 

感謝91及Will 保哥大大的指導,做了一些補充,如果有不足的還請各位大大指點指點唷!

 

 

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

相關網站:

http://blog.ericsk.org/archives/1423

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

 

Jenny:
    陽光令人愉快,雨水令人振作,
    風聲令人奮起,雪花令人興奮,
    沒有所謂的壞天氣!!
    只有不同的好天氣!!