ホームページ  >  記事  >  php教程  >  ajax取得ページで直接文字化けが表示される問題の解決方法

ajax取得ページで直接文字化けが表示される問題の解決方法

WBOY
WBOYオリジナル
2016-06-21 08:50:26781ブラウズ

ご存知のとおり、xmlhttpは通信時にutfエンコードを使用しており、国内の多くのWebページの情報はgbkエンコードを使用しているため、ajax経由でWebページに直接接続し、取得した情報を直接表示するとコード化けしてしまいます。サーバー側の Web ページのエンコードを変更できない場合があります (他の Web サイトから天気予報情報を取得する場合など)。この場合、エンコード作業を行う唯一の方法はクライアント側で js を使用することです。 🎜>

次の js は、サーバーから返された gbk エンコード文字列を utf エンコード文字列に変換するために使用されます:


関数 gb2utf8(data){ var glbEncode = [];
gb2utf8_data = データ;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/% ([A-Z].)%(.{2})/g,"@$1$2");
t=t.split("@");
var i=0,j=t.length,k;
while(++i k=t[i].substring(0,4);
if(!glbEncode[k]) {
gb2utf8_char = eval("0x"+k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k]=escape(gb2utf8_char).substring(1,6);
}
t[i]=glbEncode[k]+t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));}


このコードを使用すると、返された Web ページのコンテンツを直接エンコードできます: var response=gb2utf8(response.responseBody);


このようなトランスコーディングの後、取得されたページのコンテンツは文字化けしません。 もちろん、サーバー側のページで
utf-8 エンコード が使用されている場合は、エンコードの必要はまったくありません。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。