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

Control character in cookie value, consider BASE64 encoding your value

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

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

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

  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

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

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

    项目当中用到cookie保存中文,但是会报如下错误: Control character in cookie value, consider BASE64 encoding your value 大概 ...

  2. 使用Cookie报错Control character in cookie value, consider BASE64 encoding your value

    参考资料: http://www.blogjava.net/persister/archive/2009/10/02/297103.html http://blog.csdn.net/xiaozhen ...

  3. Control character in cookie value, consider BASE64 encoding your value

    这是因为你给Cookie设置了中文的value,比如Cookie c = new Cookie("user", "张三");

  4. Cookie存储中文报错:java.lang.IllegalArgumentException: Control character in cookie value or attribute.(转)

    项目中做自动登录和保存密码时,Cookie报错Java.lang.IllegalArgumentException,上google查了下 在http://hi.baidu.com/xtxycy/blo ...

  5. Cookie不能保存中文解决方式

     在用cookie保存username的时候,发现cookie值不能存中文,报例如以下错: Control character in cookie value, consider BASE64 e ...

  6. tomcat使用cookies缓存的时候中文报错解决办法 java.lang.IllegalArgumentException: Control character in cookie value or attribute.

    报错出现 java.lang.IllegalArgumentException: Control character in cookie value or attribute. at org.apac ...

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

    java.lang.IllegalArgumentException: Control character in cookie value or attribute. 该异常说明cookie中的val ...

  8. 解决Tomcat的IllegalArgumentException: Control character in cookie value or attribute错误

    接口中带有中文,tomcat8 17-Apr-2019 13:21:23.734 严重 [http-nio-8082-exec-2] org.apache.coyote.http11.Abstract ...

  9. 异常:java.lang.IllegalArgumentException: Control character in cookie value or attribute.

    后台提示: 严重: Error processing requestjava.lang.IllegalArgumentException: Control character in cookie va ...

随机推荐

  1. (原)ubuntu上安装Torch7及nn及dpnn

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5653864.html 参考网址: http://torch.ch/docs/getting-start ...

  2. 操作数据表中的记录——SELECT (where表达式、GROUP BY、HAVING、LIMIT)

    原文链接:http://www.ifyao.com/2015/01/26/%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E8%A1%A8%E4%B8%AD%E7%9A%84 ...

  3. php代码查询apache模块

    <?php print_r(apache_get_modules()); ?> 注:此函数仅适用于CGI模式.

  4. Array类型(二)

    1.concat()方法可以基于当前数组中的所有项创建一个新数组. 先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组. var colors = ["r ...

  5. 【转】Redis安装整理(window平台和Linux平台)

    原文连接:http://zheng12tian.iteye.com/blog/1471726 原文作者:zheng12tian 转载注明以上信息! window平台Redis安装 redis wind ...

  6. iOS开发多线程-线程间通讯

    一.NSThread 线程间的通讯 - (void)demoAboutNSThread { NSLog(@"demoAboutNSThread %@", [NSThread cur ...

  7. ubuntu Python2.7 安装PIL问题

    $sudo easy_install PIL WARNING: '' not a valid package name; please use only.-separated package name ...

  8. kibana 日志查看界面

  9. Linux系统编程(23)——信号的阻塞

    实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending).进程可以选择阻塞(Block)某个信号.被阻塞的信号产生时将保持在未决状态,直到进程 ...

  10. find -exec

    find -exec 的标准写法 find ./ -name "*.tmp" -exec rm -rf "{}" \; find -exec 这个命令组合很好用 ...