ご存知のとおり、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
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 エンコード が使用されている場合は、エンコードの必要はまったくありません。