Jquery停止HTML编码cookie

Jquery停止HTML编码cookie,jquery,cookies,escaping,html-encode,Jquery,Cookies,Escaping,Html Encode,我正在使用这段简短的代码: var d = itemID + "," + quantity; var CookieData = $.cookie("storebasket"); if(CookieData == null || CookieData == "") { $.cookie("storebasket", d, { path: '/', expires: 60 }); } else { $.cookie("storebasket", CookieData + "|" +

我正在使用这段简短的代码:

var d = itemID + "," + quantity;
var CookieData = $.cookie("storebasket");

if(CookieData == null || CookieData == "") {
    $.cookie("storebasket", d, { path: '/', expires: 60 });
} else {
    $.cookie("storebasket", CookieData + "|" + d, { path: '/', expires: 60 });
}
但是,该值始终为HTML编码。例如:

5%2C1
解码时为:

我尝试过使用
unescape
,但没有成功:

$.cookie("storebasket", unescape(d), { path: '/', expires: 60 });

还有什么想法吗?

这个答案非常有用:


但我真的看不出有什么问题。当您想在文档中使用它们时,可以取消对它们的替换。如果要将它们存储在cookie中,则将对它们进行转义。

jquery.cookie默认情况下对逗号进行编码。要覆盖此选项,请执行以下操作:

$.cookie.raw = true;

奇怪的Unescape对我有效:@Jonny,这个Fiddle可以工作,但是当我们尝试将它保存到Cookie中时,值总是HTML编码的。问题是,如果禁用Javascript,站点会返回到非JS版本。服务器端cookie设置不会对数据进行HTML编码,因此当JS决定对其进行编码时,我们不知道服务器端是否需要解码。如果您总是在服务器端解码该怎么办?据我所知,解码后的字符串在解码时保持不变。在任何情况下这样做可能都不安全,例如,如果我们想将
%20
存储为值OK。使用逗号以外的另一个未编码的字符怎么样?只有逗号、空格和分号是不允许的。这是一个可能的想法,但它更像是一种黑客行为,可能会在将来引发问题。解决此问题的最佳方法是让它以非HTML编码的方式将值存储在cookie中。对于将来还必须维护它的任何其他人来说,修改它也将更加混乱和耗时
$.cookie.raw = true;