ASP.NETは文字列IE 6の文字化けしの問題を返します
6161 ワード
プロジェクトAは、すべてのファイル符号化とコンテンツ符号化がUTF-8である.
プロジェクトB,Index.aspxファイル符号化とページコンテンツ符号化はともにGB 2312である.
プロジェクトAがJSON形式のデータをプロジェクトBに返す場合、他のブラウザはIEではできません.その後、ネットで資料を探して解決しました.後用に備えて、ここに記録します.
プロジェクトA、サービス側、以下の通り:
プロジェクトBは、返されたデータを復号し、以下のようにする.
問題は解決したが、気分が悪くて、隣に若者の技術があってもいいので、聞いてみると、以下のコードを追加して解決しました.
プロジェクト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");