通过HttpServletResponse的addCookie(Cookie cookie)向客户端写cookie信息,这里使用的tomcat版本是8.5.31,出现如下报错:
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
错误原因:一个无效的字符[32]出现在了cookie当中,而在ASCII码中32对应的就是空格;
在tomcat 8 之前 cookie中不能直接存储中文数据,需要将中文数据转码---一般采用URL编码(%E3);
在tomcat 8 之后,cookie支持中文数据。特殊字符还是不支持,建议使用URL编码存储,URL解码解析;
解决方法:
通过URLEncoder.encode(String s)对URL进行编码;
通过URLDecoder.decode(String s)对URL进行解码;