一、请求参数中的中文乱码问题
对于请求对象,使用setCharacterEncoding(“UTF-8”)方法
二、响应输出中文乱码
一般在Servlet输出纯文本时,通常会用ServletResponse对象的getWriter方法返回一个PrintWriter对象,然后利用这个对象把文本输出到客户端。
PrintWriter对象输出默认使用ISO-8859-1字符集进行编码,所以会出现中文了乱码的情况,这里就需要设置一些ServletResponse的字符集编码方式。
指定字符集编码:
- response.setCharacterEncoding(“UTF-8”)
- response.setContextType(“text/html;charset=UTF-8”)
- response.setLocale(new java.util.Locale(“zh”,“CN”))
三者区别:
- 第一种方法只能设置字符输出流的编码方式,且优先级最高,可以覆盖后面两种方法。
- 第二种方法既可以设置编码方式,也可以设置浏览器的解码方式,优先级介于中间。
- 第三种方式只能设置字符输出流编码方式,优先级最低。