1.Servlet响应HttpServletResponse的中文乱码:
response.setContentType(“text/html;charset=UTF-8”);
2.项目中需要将压缩后的二进制数据存入cookie的value中。如果直接将二进制数据存入是不行的,因为cookie规范中规定了一些字符不允许存入:
With Version 0 cookies, values should not contain white space, brackets, parentheses, equals signs, commas, double quotes, slashes, question marks, at signs, colons, and semicolons. Empty values may not behave the same way on all browsers.
如图的设置Cookie的value值会失败,并报异常:
Caused by: java.lang.IllegalArgumentException: Control character in cookie value or attribute.
对于二进制数据,常见的是中文数据,无法(也不应该)控制数据内容。所以在写入和读出cookie数据前后,应该先经过编解码过程,将二进制数据编码存储。
这里采用的是URLEncoder以及URLDecoder进行编解码,在存入Cookie的value值之前进行编码,获取value值时进行解码操作。
结果: