Cookie不能攜帶中文的解決方法


在做一個十天免登陸功能的時候,需要用到Cookie,並且需要往里面添加用戶名以及密碼。在測試的時候,報了一個錯誤:

 

 

 

出錯的代碼為:

 

 

 

從報錯信息來看,是說我的Cookie的值中有非法的參數或者Cookie值中攜帶有非法的控制字符,例如換行符:”\r\n”、”\n”

這個cookie1里存的是:username:會飛的豬。也就是往cookie里添加了中文,我去網上搜了一下,果然cookie是不能直接攜帶中文的,這是不支持的

但是如果想攜帶中文,有沒有辦法?當然,只要將cookie中有中文的key或者value用UTF-8或者gbk進行編碼(只要是支持中文的編碼就行),早期版本的tomcat推薦使用的是編碼是:BASE64,早前版本的tomcat如果出現:cookie有非法參數的錯,報錯如下:

 Control character in cookie value, consider BASE64 encoding your value,但是現在版本的tomcat好像都不推薦使用這個編碼了,還是使用UTF-8吧。

編碼后將其存入cookie中,最后取出來的時候,再用相同的編碼進行解碼即可。

編碼:URLEncoder.encode("中文key或者中文value","UTF-8″);

解碼:URLDecoder.decode(cookies.getValue(),"UTF-8″);

URLEncodeURLDecode在包java.net里面。

 

 

我這里是用戶名使用了中文,所以需要將用戶名編碼以及解碼一下:

編碼:

 

解碼:

 

 

這樣就沒有問題了。

 

對了,關於cookie為什么叫cookie,而cookie翻譯過來就是曲奇餅干。聽說是因為,當初發明cookie的這間公司提供給員工的零食是曲奇餅干,而曲奇餅干有一種特殊的味道。吃多了的話,人的身上會帶有這種氣味。一到大街上,人們聞到這種味道就知道了這個人是那間公司的員工。其實cookie也可以算是一個人身份的證明吧,不知道這個段子是不是真的,反正也側面表現了cookie的作用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM