Response对象响应的中文乱码处理
Response向页面响应中文
使用字节流响应中文
getOutputStream(); 输出内容
getWriter(); 输出内容
编写代码:使用字节流的方式输出中文
ServletOutputStream outptuStream = response.getOutputStream();
outputStream.write(“中文内容”.getBytes());
****使用上述代码向页面输出中文是否会有乱码?是不一定
其实这个乱码的产生与中文转成字节数组及浏览器打开方式(打开的时候采用的默认字符集)有关
解决:
将中文转成字节数组的时候和浏览器默认打开的时候采用的字符集一致即可。
ServletOutputStream outptuStream = response.getOutputStream();
//设置浏览器默认打开的时候采用的字符集
response.setHeader(“Content-type”,”text/html;charset=UTF-8”);
//设置中文转成字节数组字符集编码
outputStream.write(“中文内容”.getBytes(“utf-8”));
使用字符流响应中文
getWriter(); 输出内容
编写代码:response.getWriter().println(“中文内容”);
****使用上述代码向页面输出中文是否会产生乱码?
一定乱码
原因:
字符流是有缓冲区的,response获得字符流,response设计默认的缓冲区编码是ISO-8859-1。这个字符集不支持中文的。
解决:
设置response获得字符流缓冲区的编码和设置浏览器默认打开时候采用的字符集一致即可。
//设置浏览器默认打开的时候采用的字符集
response.setHeader(“Content-type”,”text/html;charset=UTF-8”);
//设置response获得字符流的缓冲区的编码
Response.setCharacterEncoding(“UTF-8”);
//字符流输入中文
response.getWriter().println(“中文内容”);
字符流向页面响应中文,有一种简化的方式:
//同时设置浏览器默认打开时候的以及字符流的缓冲区的字符集
response.setContentType(“text/heml;charset=UTP-8”);
response.getWriter().println(“中文内容”);