PrintWriter返回乱码的分析及解决
来源:互联网 发布:国密算法 csp 编辑:程序博客网 时间:2024/04/28 11:05
用response得到输出流,即response.getOuptStream(); 返回值为ServletOutputStream 对象,即JSP的out对象,要么用response得到输出对象PrintWriter即response.getWriter()。
输出乱码。为什么呢,已经设置了字符编码啊?难道设置的无效。
在API中找到方法说明:
就是讲,在返回一个PrintWriter对象的时候,charactor encoding就已经确定了,就已经设置好了字符集了。什么时候设置的呢? setCharacterEncoding方法的实现时发现如下代码:
ServletOutputStream out = response.getOutputStream();
out.print("中文");
情况1:正常,浏览器按utf-8方式查看
//response.setContentType("text/html; charset=utf-8");
情况2:浏览器缺省按简体中文查看,手动设为utf-8方式查看正常
//response.setCharacterEncoding("utf-8");
说明:这种方式不仅不需要在调用getOutputStream()之前设定字符集,甚至在print输出后设定都有效。
结论:
1.在servlet中输出中文,如果采用PrintWriter方式,需要在调用getPrintWriter()之前调用setContentType 或者 setCharacterEncoding;采用ServletOutputStream方式,不受此限。
2.setContentType 和 setCharacterEncoding两方法中设定characterEncoding的方法对服务器效果一致,不需要反复调用。在输出文本内容时,采用response.setContentType("text/html; charset=utf-8");似乎更为方便。
3.PrintWriter自身并没有处理编码的职责,它还是应该看成一个装饰器比较好:它就是为了输出更方便而设计的,提供print、println、printf等便利方法。要设置编码的话,可以在它的底层Writer上设置:(这里以OutputStreamWriter为底层Writer),参考:
- PrintWriter返回乱码的分析及解决
- PrintWriter返回乱码的分析及解决
- PrintWriter返回乱码的分析及解决
- PrintWriter返回乱码的分析及解决
- PrintWriter返回乱码的分析及解决
- PrintWriter返回乱码的分析及解决
- PrintWriter返回乱码的分析及解决
- PrintWriter返回值乱码问题
- PrintWriter 返回前端中文乱码
- java PrintWriter 返回的打印值乱码的问题
- 使用PrintWriter对象导致Struts国际化化失败问题的解决及分析
- Jsp中文乱码 PrintWriter返回中文乱码
- PrintWriter out = response.getWriter();乱码解决
- printWriter乱码
- PrintWriter输出中文乱码的问题
- PrintWriter输出中文乱码的问题
- JavaWeb中使用PrintWriter乱码的解决方法
- SpringMvc使用PrintWriter乱码的问题
- 利用HttpClient下载图片
- UML之父Ivar Jacobson:软件工程需要重建基础
- CImg库中CImg,CImgList,CImgDisplay三个类的介绍
- python - 语法元素 - 列表推导式
- kernel网桥代码分析
- PrintWriter返回乱码的分析及解决
- eclipse 安装 resin
- MySQL 中文显示乱码
- VI命令
- NO.45 Web系统性能优化 3.SQL优化
- 浏览器防护下的ActiveX问题
- Asp.net常用的51个代码(非常实用)
- 解决FreeMaker中文乱码问题
- svn服务器安装配置与svn的eclipse的subclipse插件使用