• Cookie不能携带中文的解决方法


    在做一个十天免登陆功能的时候,需要用到Cookie,并且需要往里面添加用户名以及密码。在测试的时候,报了一个错误:

    出错的代码为:

     

    从报错信息来看,是说我的Cookie的值中有非法的参数或者Cookie值中携带有非法的控制字符,例如换行符:” ”、” ”

    这个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的作用。

  • 相关阅读:
    HttpWebRequest、HttpWebResponse简单Demo
    向虚拟机发短信(android SMS 调试)
    双系统时间相关8小时
    电脑开机报警声
    Windows Live Writer 代码插件
    配置Linux防火墙
    配置yum源方法,以及失效时的处理
    xp系统下硬盘安装centos6.5
    Android 四大组件 与 MVC 架构模式
    elasticsearch GIS空间查询问题解决
  • 原文地址:https://www.cnblogs.com/ljfsmile0613/p/13401980.html
Copyright © 2020-2023  润新知