ASP.NETは文字列IE 6の文字化けしの問題を返します

6161 ワード

プロジェクトAは、すべてのファイル符号化とコンテンツ符号化がUTF-8である.
プロジェクトB,Index.aspxファイル符号化とページコンテンツ符号化はともにGB 2312である.
 
プロジェクトAがJSON形式のデータをプロジェクトBに返す場合、他のブラウザはIEではできません.その後、ネットで資料を探して解決しました.後用に備えて、ここに記録します.
プロジェクトA、サービス側、以下の通り:
modelUser.UserRealName = System.Web.HttpUtility.UrlEncode(modelUser.UserRealName, System.Text.Encoding.UTF8);  

プロジェクトBは、返されたデータを復号し、以下のようにする.
decode(data[0]["UserRealName"])
/****************************************************************************************************************/
/*Url       System.Web.HttpUtility.UrlEncode(modelUser.UserRealName, System.Text.Encoding.UTF8);***************/
/****************************************************************************************************************/
function decode(zipStr) {
    var uzipStr = "";
    for (var i = 0; i < zipStr.length; i++) {
        var chr = zipStr.charAt(i);
        if (chr == "+") {
            uzipStr += " ";
        } else if (chr == "%") {
            var asc = zipStr.substring(i + 1, i + 3);
            if (parseInt("0x" + asc) > 0x7f) {
                uzipStr += decodeURI("%" + asc.toString() + zipStr.substring(i + 3, i + 9).toString()); ;
                i += 8;
            } else {
                uzipStr += AsciiToString(parseInt("0x" + asc));
                i += 2;
            }
        } else {
            uzipStr += chr;
        }
    }
    return uzipStr;
}

function StringToAscii(str) {
    return str.charCodeAt(0).toString(16);
}

function AsciiToString(asccode) {
    return String.fromCharCode(asccode);
}

function encode(unzipStr) {
    var zipstr = "";
    var strSpecial = "!\"#$%&'()*+,/:;<=>?[]^`{|}~%";
    var tt = "";
    for (var i = 0; i < unzipStr.length; i++) {
        var chr = unzipStr.charAt(i);
        var c = StringToAscii(chr);
        tt += chr + ":" + c + "n";
        if (parseInt("0x" + c) > 0x7f) {
            zipstr += encodeURI(unzipStr.substr(i, 1));
        } else {
            if (chr == " ")
                zipstr += "+";
            else if (strSpecial.indexOf(chr) != -1)
                zipstr += "%" + c.toString(16);
            else
                zipstr += chr;
        }
    }
    return zipstr;
}
/****************************************************************************************************************/

 
問題は解決したが、気分が悪くて、隣に若者の技術があってもいいので、聞いてみると、以下のコードを追加して解決しました.
context.Response.ContentEncoding = Encoding.GetEncoding("GB2312");