我正在使用JSON.stringify
转换对象以将其保存在Cookie中。但是在将cookie中保存阿拉伯语Windows-1256编码后,我无法恢复它。这是我做的:
例如:
转换并保存在Cookie中。
conv[user] = {"user":1,"u":1,"m":3,"c":255,"comment":'السلام عليكم ورحمه الله'};
addCookie('chat_conversations', JSON.stringify(conv) , 7);
从cookie恢复值:
var con = is_cookie('chat_conversations');
conv = jQuery.parseJSON(con);
获取我的JSON结果:
alert(conv[1].comment);
结果
“'D3D'E 9DJCE H1-EG'DDG H(1C'* G \ n”
这是我的cookie的结果
chat_conversations = {“1”:{“user”:“1”,“u”:“1”,“m”:3,“c”:255,“comment”:“'D3D'E 9DJCE H1 -EG'DDG H(1C'* G \ n“}}; expires = Sat,08 Dec 2012 15:00:42 GMT; path = /; domain = 127.0.0.1
如何在Cookie中保存包含阿拉伯语的对象并将其还原?
答案 0 :(得分:2)
您应该使用escape
或encodeURIComponent
(两者之间的微小差异,见下文)对进入Cookie的字符串进行处理,然后通过unescape
或decodeURICompontent
进行反转。检索数据。
// Create obj using safe chars only
conv[user] = {
"user" : 1, // (numbers are fine as they are)
"u" : 1,
"m" : 3,
"c" : 255,
"comment" : escape('السلام عليكم ورحمه الله') // by escaping potentially unsafe chars
};
// save
addCookie('chat_conversations', JSON.stringify(conv) , 7);
// retrieve
var con = is_cookie('chat_conversations');
conv = jQuery.parseJSON(con);
var comment = unescape(conv[1].comment); // unescape what was escaped earlier
alert(comment);
// "السلام عليكم ورحمه الله"
escape
很好,因为您只想在JavaScript中使用此数据。如果您想访问cookie服务器端,那么我强烈建议您使用encodeURIComponent
。
如果您只是将其用于JavaScript,请考虑window.localStorage
,因为它会减少互联网使用量。