我从包含逗号的cookie中获取值时遇到问题。它不返回完整的字符串,但字符串被截断为第一个逗号。例如:
// cookie value = var1,var2,var3
String cookieVal = cookie.getValue();
//cookieVal now is "var1" instead of "var1,var2,var3"
和
// cookie value = var1=var2=var3
String cookieVal = cookie.getValue();
//cookieVal now is "var1=var2=var3"
我做错了什么。
答案 0 :(得分:5)
看看Cookie Documentation。它说:
此类支持版本0 (由Netscape提供)和版本1(由RFC提供) 2109)cookie规范。通过 默认情况下,使用创建cookie 版本0以确保最佳 互操作性。
如果你看到setValue方法,你会发现这个
编辑:只是阅读谷歌的东西。也许尝试将版本设置为1,看看它是如何工作的。对于版本0的cookie,值不应包含空格,括号,括号,等号,逗号,双引号,斜杠,问号,符号,冒号和分号。空值在所有浏览器上的行为可能不同。
答案 1 :(得分:2)
逗号是http-header值定义的一部分,因此在您的Cookie值中使用url-encode逗号。
URLEncoder.encode(cookieValue);
我发现了这个:
“此[cookie值]字符串是一系列字符,不包括在内 分号,逗号和空格。如果需要这样的话 名称或值中的数据,某些编码方法,如URL样式%XX 虽然没有定义编码,但建议使用编码 必需的“
RFC说:
非正式地,Set-Cookie响应头包含令牌Set- Cookie:,后跟逗号分隔的一个或多个Cookie列表。 每个cookie都以NAME = VALUE对开头,后跟零或更多 以分号分隔的属性 - 值对。
更新:在您澄清您正在从谷歌解析cookie之后:我查看了所有__utmX cookie,但没有一个包含逗号。分隔符有|
或网址编码:
答案 2 :(得分:0)
您确定需要在Cookie中存储一个集合吗? IMHO cookie不应用于存储除标识符之外的数据。数据存储应尽可能在服务器端完成。