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")编码。

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

Java代码 

  1. /**
  2. * 添加一个cookie值
  3. * @param name 名称
  4. * @param value 值
  5. * @param time  cookie的有效期
  6. * @param response 保存cookie的对象
  7. */
  8. public static void setCookie(String name, String value, Integer time,HttpServletResponse response) {
  9. try {
  10. //关键点
  11. value = URLEncoder.encode(value,"UTF-8");
  12. catch (UnsupportedEncodingException e) { }
  13. Cookie cookie = new Cookie(name, value);
  14. cookie.setPath("/");
  15. cookie.setMaxAge(time);
  16. response.addCookie(cookie);
  17. }
  18. /**
  19. * 根据name值,从cookie当中取值
  20. *
  21. * @param name    要获取的name
  22. * @param request cookie存在的对象
  23. * @return 与name对应的cookie值
  24. */
  25. public static String getCookie(String name, HttpServletRequest request) {
  26. Cookie[] cs = request.getCookies();
  27. String value = "";
  28. if (cs != null) {
  29. for (Cookie c : cs) {
  30. if (name.equals(c.getName())) {
  31. try {
  32. //关键点
  33. value = URLDecoder.decode(c.getValue(),"UTF-8");
  34. catch (UnsupportedEncodingException e) {
  35. }
  36. return value;
  37. }
  38. }
  39. }
  40. return value;
  41. }

转自:http://amcucn.javaeye.com/blog/403857

时间: 2024-10-25 13:16:57

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

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)编码的样子. 解决方案:将要保存的值进行URLE

Cookie不能保存中文解决方式

 在用cookie保存username的时候,发现cookie值不能存中文,报例如以下错: Control character in cookie value, consider BASE64 encoding your value 发生错误在:response.addCookie(cookie); 在曾经的编程中也碰到过这种问题,主要是cookie值里面存在非法參数,如存在"\r\n"."\n"之类的字符时就报报这种错,但我就个username啊,不存在像这些

Cookie不能保存中文解决方案

 在用cookie保存用户名的时候,发现cookie值不能存中文,报如下错: Control character in cookie value, consider BASE64 encoding your value 错误发生在:response.addCookie(cookie); 在以前的编程中也碰到过这样的问题,主要是cookie值里面存在非法参数,如存在"\r\n"."\n"之类的字符时就报报这样的错,但我就个用户名啊,不存在像这些字符啊,不管,我把c

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

tomcat7中cookie写入中文引发Control character in cookie value or attribute异常

原因是有关中文编码的问题,中文采用的是unicode编码,而英文采用的是ASCII编码,所以当COOkie保存中文的时候需要对中文进行编码,而且从Cookie中取出内容的时候也要进行解码,编码和解码可以使用 public static void CreateCookie(String username,HttpServletRequest req,HttpServletResponse resp,int sec) throws Exception{ String encode = URLEnco

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('

SyntaxError: JSON.parse: bad control character in string literal at line 1 column 16 of the JSON data

JSON.parse转化Json字符串时出现:SyntaxError: JSON.parse: bad control character in string literal at line 1 column 16 of the JSON data 测试代码: JSON.parse("{\"Result\":\"bhbh\thuhuha\"}") 罪魁祸首:\t导致

robot framework用SSHLibrary发送ctrl-c 等控制字符(control character)到远端 ssh server(linux server etc的表格代码

How to write CTRL-C and send it to remoter ssh server via ssh library in robot framework 实现 ctlr+c按键同时按下的效果,并把这个按键动作发送到远端ssh server 服务器: robot表格式语言代码如下ctlr+c  ^c: ${crtl_c} Evaluatechr(int(3)) SSHLibrary.Write Bare ${crtl_c} 因为是^C的ascii码是3,chr(int(3)