Control character in cookie value, consider BASE64 encoding your value , java操作cookie遇到中文会报错的解决方案

项目当中用到cookie保存中文,但是会报如下错误:

Control character in cookie value, consider BASE64 encoding your value

大概意思是保存到cookie当中的值存在控制字符,无法保存。但实际上数据是不存在这种问题的。再看后面的那句话,好像是将要保存的值进行了base64编码,可能是因为中文在编码时出现乱码导致一些控制字符的出现。看来setCookie方法不支持保存中文(GBK)编码的样子。

解决方案:将要保存的值进行URLEncoder.encode(value,"utf-8")编码。

在提取时,同样进行解码:

URLDecoder.decode(c.getValue(),"UTF-8");

PS.同样的代码,我在另外一个项目中却没有报错,检查后发现,原来我另外一个项目的数据库保存的格式就是UTF-8,所以取出来就可以直接用了,而报错的这个则是用的GBK编码。看来在JAVA开发中,能用UTF-8的话还是用UTF-8比较好,一定要用中文(GBK)的话,千万要当心中文乱码的编码问题。

经验:能用UTG-8编码的尽量别用GBK中文格式。能用英文的不要用中文保存数据。

Control character in cookie value, consider BASE64 encoding your value , java操作cookie遇到中文会报错的解决方案,布布扣,bubuko.com

时间: 2024-09-03 19:29:18

Control character in cookie value, consider BASE64 encoding your value , java操作cookie遇到中文会报错的解决方案的相关文章

Control character in cookie value, consider BASE64 encoding your value-Cookie保存中文出错[转]

项目当中用到cookie保存中文,但是会报如下错误: Control character in cookie value, consider BASE64 encoding your value 大概意思是保存到cookie当中的值存在控制字符,无法保存.但实际上数据是不存在这种问题的.再看后面的那句话,好像是将要保存的值进行了base64编码,可能是因为中文在编码时出现乱码导致一些控制字符的出现. 解决方案:将要保存的值进行URLEncoder.encode(value,"utf-8"

mysql报错问题解决Character set 'utf8mb4' is not a compiled character set

mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file 报错的解决方法 1.由于日常程序使用了字符集utf8mb4,为了避免每次更新时,set names utf8mb4,就把配置文件改了,如下: 增加了mysql客户端的默认字符集设置 [[email protected]~]# vim

知识点整理之Java的Cookie操作

创建Cookie Java代码   // new一个Cookie对象,键值对为参数 Cookie cookie = new Cookie("key", "value"); // 设置Cookie最大生存时间,以秒为单位,负数的话为浏览器进程,关闭浏览器Cookie消失 cookie.setMaxAge(60);  // 一分钟 // 将Cookie添加到Response中,使之生效 response.addCookie(cookie); 读取Cookie,读取Coo

js操作cookie,实现登录密码保存

通常cookie和session,是web开发中用于存储信息的对象,session存在于服务器的内存中,而cookie则是存在客户端,所以js可以直接操作cookie进行信息的存储和读取. js存放cookie一般的写法,如:document.cookie="userName=admin";,如果是多个键值对:document.cookie="userName=admin; userPass=123"; 下面是js操作cookie保存用户的登录信息: <!DO

cookie遇到java.lang.IllegalArgumentException: Control character in cookie value or attribute

java.lang.IllegalArgumentException: Control character in cookie value or attribute. 该异常说明cookie中的value或属性有控制字符,但是我设置的value并没有特殊字符.初步怀疑是中文编码问题,于是在将字符串进行base64编码之前先用Cookie cookie = new Cookie("name", URLEncoder.encode(str, "UTF-8"));将原字符

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: Control character in cookie value or attribute.

1 HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: Control character in cookie value or attribute. 2 type Exception report 3 4 message Request processing failed; nested exception is java.lang.Illega

Base64 Encoding / Decoding in Node.js

[Base64 Encoding / Decoding in Node.js] Here is how you encode normal text to base64 in Node.js: var b = new Buffer('JavaScript');var s = b.toString('base64');// SmF2YVNjcmlwdA== And here is how you decode base64 encoded strings: var b = new Buffer('

cookie设置日期时间有空格报错:java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value

rt,代码及报错如下: java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value 现暂时将"yyyy-MM-dd hh:mm:ss"中的空格用#替代,就能正常显示时间日期了...

python - 中文打印报错SyntaxError: Non-ASCII character &#39;\xe4&#39; in file test.py on line 3, but no encoding declared。

python中默认的编码格式是ASCII格式, 所以在没修改编码格式时无法正确打印汉字. 解决办法: 在以后的每一个需要显示汉字的python文件中, 可以采用如下方法在 #!/usr/bin/python的下一行加上一句话来定义编码格式, 以utf-8编码为例: #!/usr/bin/python#coding:utf-8 特别注意:定义编码格式的这一行代码必须放在第一行或者第二行,一般如果第一行是提示python位置的代码, 那么定义编码格式的这一行就必须放在第二行,否则依然会提示错误. p