URL中文參數亂碼的一個解決辦法


 
瀏覽器對有中文參數的url大部分都用utf-8編碼,但我也曾經遇見過用GB2312編碼的;如果遇見這樣情況,那么接受到的參數就會出現亂碼。亂碼情況視服務器解碼方式,Asp.Net網站一般默認為utf-8解碼,如果GB2312編碼就會出現亂碼。
 
 
 
最佳的解決辦法:
當然是使用js編碼參數后再進行get或post:
encodeURIComponent
 
特殊情況:
當然這是普通情況,如遇到自己沒辦法編碼后呢?直接上代碼:

  string input = GetUrlParam(key).ToLower();//GetUrlParam 是獲取url參數原始編碼的方法
            if (input.Length == 0)
                return string.Empty;

            //首先用utf-8進行解碼 
            string result = HttpUtility.UrlDecode(input, Encoding.UTF8);

            // 將已經解碼的字符再次進行編碼.             
            string encode = HttpUtility.UrlEncode(result, Encoding.UTF8).ToLower();

            //與原來編碼進行對比,如果不一致說明解碼未正確,用gb2312進行解碼 
            if (input != encode)
                result = HttpUtility.UrlDecode(input, Encoding.GetEncoding("gb2312"));

            return result;


免責聲明!

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



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