2011-07-20 19 views
3

当我读取一个cookie的值时,'@'后面的部分被忽略。所以,如果我的cookie的值是“ABC @ XYZ”,我刚开始的“ABC”当我被为什么'@'后面的cookie值被忽略?

Cookie cookies [] = request.getCookies(); 
    pwd=cookies[0].getValue(); 

检索值,而在JavaScript的我能够很容易地把它读作“ABC @xyz“,甚至在浏览器cookies中,我可以看到cookie的值为”abc @ xyz“。这里有什么可能是错的?

+0

请参阅http://stackoverflow.com/questions/1969232/allowed-characters-in-cookies – home

+0

您的意思是“@”不允许作为cookie的一部分?如果是的话,保存时不会奇怪,它是用'@'保存的,甚至Javascript也能够读取它的整体! –

回答

1

我的第一个猜测是与字符编码有关的问题。您是否尝试过使用urlencode并对cookie值进行解码?

编辑:

你应该使用URLDecoder.decode (cookies[0].getValue(), "utf-8")检索cookie的值。

为了使其发挥作用,首先必须对值进行编码:如果要从Java设置cookie值,请使用URLEncoder.encode("[email protected]", "utf-8"),要么使用encodeURIComponent("[email protected]")来设置JavaScript的值。我不知道cookie是如何设置的,所以你可能不得不为你工作的任何平台找出这个cookie。

+0

也许你可以帮助我如何做到这一点?将defo尝试它。谢谢 –

+0

我编辑了我的答案。 – weltraumpirat

+0

是的,它的工作!非常感谢!早些时候,我在javascript中使用[escape()](http://www.w3schools.com/jsref/jsref_escape.asp)来编码值,但只知道它不编码'@'; encodeURIComponent()也编码'@',所以它可以被正确编码,然后用java中的URLDecoder.decode()解码,如你所描述的。 :) –