Querystring使用中文傳值產生亂碼問題!

  • 8612
  • 0

摘要:Querystring使用中文傳值產生亂碼問題!

例:http://www.myhome.com.tw/b.aspx?mystr=中文
在b.aspx網頁抓取Querystring("mystr")的結果會是亂碼

解決方法如下:

將字串轉換成 UTF-8 編碼

http://www.myhome.com.tw/b.aspx?mystr=encodeURIComponent("中文")

之後在b.aspx網頁抓取Querystring("mystr")的結果會是"中文"

 

encodeURIComponent() 使用方法

url = url + "?name=" + encodeURIComponent("中文");

 

一般情況下, 最好選擇 encodeURIComponent()。

以下就簡單說一下差異點:

  1. escape()
    • 不編碼的符號包括: @*/+
    • escape 不編碼 + (加號), 將使表單欄位資料中有空白的處理(用 + 連結字串)造成問題。且 escape 在處理非 ASCII 語系的字元會有問題。所以, 除非特例, 應盡量避免使用 escape()。
  2. encodeURI()
    • 不編碼符號包括: ~!@#$&*()=:/,;?+'
    • 用 encodeURI() 會比使用 escape() 轉換 URI 正確。比較要注意的是這個方法不處理 ' (單引號)。
  3. encodeURIComponent()
    • 不編碼符號包括: ~!*()'
    • encodeURIComponent() 是適合大部分單一 URI 的編碼方法。這個方法通常可以正確的編出正確的編碼, 例如要編碼一段有 flash 的 html(參數有 & 符號), 如果用其他的方法, 大概解碼後 flash 也不能看了。比較要注意的是這個方法也不處理 ' (單引號)。

 






Y2J's Life:http://kimenyeh.blogspot.tw/