瀏覽器自動轉換URL編碼產生亂碼問題


如果網址中含有漢字,瀏覽器會自動將其轉換成URL編碼,而在接收端,它又自動轉換回來。

 

大部分時候都沒什么問題,但有時候就很討厭。因為生成這種URL編碼,編碼時的字符集和解碼字符集不一定相同,比如編碼時用GB2312,解碼用UTF-8,就出現亂碼。

 

這個時候,提取到的參數,自然就亂。

 

解決之道是不要用Request.QueryString來提取,而是用Request.RawUrl來獲取。后者是原始URL,沒有自動解碼的。自己獲取,自己處理。

 

 

//scode = Request.QueryString["word"];

int p = Request.RawUrl .IndexOf("word=");

string scode = Request.RawUrl.Substring(p + 5);

 

另,在瀏覽器的地址欄進行get傳參時,瀏覽器會自動進行一次UrlDecode()的解碼,然后才會傳給程序使用,也就是會先解碼一次,所以如果傳輸中文的參數時,應該進行2次UrlEncode()編碼給瀏覽器,程序再用一次UrlDecode解碼即可,親身試驗過,確實如此。


免責聲明!

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



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