欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

用Javascript读取PHP设置的中文COOKIE

程序员文章站 2024-02-08 11:18:16
...
  烈火建站学院(Bkjia.Com)PHP教程 PHP程序在COOKIE里写了点中文数据,而用Javascript读取时却读出来不能正确显示?相信很多朋友遇到过这种情况,前天搜索了一下,找到一种解决方法:PHP写COOKIE时以UTF-8编码写,而JS读出来的时候也解码一下就可以了,因为Javascript内部使用的是Unicode编码。
以下为引用的内容:
/**
*
* URL encode / decode
*
**/

var Url = {

// public method for url encoding
encode : function (string) {
return escape(this._utf8_encode(string));
},

// public method for url decoding
decode : function (string) {
return this._utf8_decode(unescape(string));
},

// private method for UTF-8 encoding
_utf8_encode : function (string) {
string = string.replace(/\r\n/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) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}

}

return utftext;
},

// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;

while ( i

c = utftext.charCodeAt(i);

if (c string += String.fromCharCode(c);
i++;
}
else if((c > 191) && (c c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) i += 2;
}
else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) i += 3;
}

}

return string;
}

}

/**
* 这段是读取Cookie
*/
function GetCookie(sName)
{
var mycookie = document.cookie.split("; ");
for (var i = 0; i {
var cookie1 = mycookie[i].split("=");
if (cookie1[0] == sName)
{
return Url.decode(cookie1[1]);
}
}
return null;
}