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值时进行解码操作。

结果:

本文探讨了Servlet响应中解决HttpServletResponse中文乱码问题的方法,通过设置contentType为UTF-8实现。同时,针对项目中将二进制数据(如中文数据)存储到Cookie的挑战,由于cookie的字符限制,介绍了使用URLEncoder和URLDecoder进行编码和解码的解决方案,确保数据正确存取。
132

被折叠的 条评论
为什么被折叠?



