我需要使用javascript设置一个cookie,我正在使用以下命令执行此操作:
document.cookie = name+"="+value;
我的问题是value
是一个字符串,可以包含任何unicode字符。
是否有自动替换特殊字符的函数(如;
) - 如果没有,是否禁止使用哪些字符?
像“encodeURIComponent()”这样的东西 - Get-Parameters的函数将是完美的
答案 0 :(得分:2)
为什么不使用a robust cookie library来处理Cookie?
$.cookie('key', value, { expires: 365 });
浏览器将cookie限制为4 kB。如果您需要在客户端上存储超过4 kB,则应使用local storage。
答案 1 :(得分:2)
您应该使用window.escape
。
escape()方法将特殊字符(非常规文本或数字的任何字符)转换为十六进制字符,这对于设置cookie的值尤其重要。在GET请求的URL或AJAX GET / POST请求中传递name = value对时也很有用。
它也有window.unescape
对应物。
<强> UPD。强>
在转义之前使用base64编码/解码可能有一定意义,以免{un}来自window.encode
的unicode字符消耗那么多。