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

2021-09-07 13:51:15 字數 545 閱讀 7151

如果**中含有漢字,瀏覽器會自動將其轉換成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解碼即可,親身試驗過,確實如此。

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

如果 中含有漢字,瀏覽器會自動將其轉換成url編碼,而在接收端,它又自動轉換回來。大部分時候都沒什麼問題,但有時候就很討厭。因為生成這種url編碼,編碼時的字符集和解碼字符集不一定相同,比如編碼時用gb2312,解碼用utf 8,就出現亂碼。這個時候,提取到的引數,自然就亂。解決之道是不要用requ...

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

如果 中含有漢字,瀏覽器會自動將其轉換成url編碼,而在接收端,它又自動轉換回來。大部分時候都沒什麼問題,但有時候就很討厭。因為生成這種url編碼,編碼時的字符集和解碼字符集不一定相同,比如編碼時用gb2312,解碼用utf 8,就出現亂碼。這個時候,提取到的引數,自然就亂。解決之道是不要用requ...

瀏覽器URL編碼

1 瀏覽器編碼 ie6.0及以前版本,通過在位址列裡輸入url時,使用的預設編碼是gbk ie7.0 ie8版本,通過在位址列裡輸入url時,使用的預設編碼是utf 8,也可以在工具 高階選項裡修改 2 中文引數編碼例項 string version request.getheader user a...