Agni Website Building Academy (Bkjia.Com) PHP チュートリアル PHP プログラムで COOKIE に中国語データを書き込んでいるのですが、JavaScript で読み込むと読み込まれてしまい、正しく表示できないのですが?多くの友人がこの状況に遭遇したと思います。私は一昨日検索して解決策を見つけました。PHP は COOKIE を UTF-8 エンコードで書き込み、JavaScript は内部で COOKIE を使用するため、それを読み出すときにデコードするだけです。
以下は引用内容です: /** * * URL エンコード / デコード * **/
var URL = {
// URL エンコード用のパブリック メソッド encode : function (string) { returnscape(this._utf8_encode(string)); },
// URL デコード用のパブリック メソッド decode : function (string) { return this._utf8_decode(unescape(string)); },
// UTF-8 エンコード用のプライベート メソッド _utf8_encode : function (string) { string = string.replace(/rn/g,"n"); var utftext = "";
for (var n = 0; n
var c = string.charCodeAt(n);
if (c utftext += String.fromCharCode(c); } else if((c > 127) && (c utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode((c >> 6) & 63); utftext += String.fromCharCode((c & 63) | 128); }
}
return utftext; },
// UTF-8 デコード用のプライベート メソッド _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0 ;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c 191) && (c } else if((c > 191) && (c c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; string += String .fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; }
}
文字列を返します; }
}
/** * このセクションは Cookie を読むためのセクションです */ function GetCookie(sName) { var mycookie = document.cookie.split("; "); for (var i = 0; i < mycookie.length; i++) { var cookie1 = mycookie[i].split("="); if (cookie1[0] == sName) { return Url.decode(cookie1[1]); } } return null; }
|