servlet中文乱码原因及解决方案

servlet中文乱码原因及解决方案

ID:12527651

大小:159.63 KB

页数:7页

时间:2018-07-17

servlet中文乱码原因及解决方案_第1页
servlet中文乱码原因及解决方案_第2页
servlet中文乱码原因及解决方案_第3页
servlet中文乱码原因及解决方案_第4页
servlet中文乱码原因及解决方案_第5页
资源描述:

《servlet中文乱码原因及解决方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Servlet中文乱码问题及解决方案剖析分类:【JavaWeb】2012-01-2823:26654人阅读评论(0)收藏举报一、常识了解1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立;2.java.nio.charset.Charset.defaultCharset()获得平台默认字符编码;3.getBytes()是通过平台默认字符集进行编码;二、中文乱码出现在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为在安装时没有设置;而在Servlet中,也会遇到中文乱码问题;比如:OutputStrea

2、mout=response.getOutputStream();out.write(String);输出中文时可能会出现乱码;比如:[java]viewplaincopyprint?1.protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{2.3.OutputStreamout=response.getOutputStream();4.Stringdata="博客";5.out.write(data.get

3、Bytes("UTF-8"));6.}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{OutputStreamout=response.getOutputStream();Stringdata="博客";out.write(data.getBytes("UTF-8"));}输出乱码的问题是程序用UTF-8编码,而浏览器用GB2312解码,因此会出现乱码;Servlet乱码分为request乱码和res

4、ponse乱码;三、response中文乱码在网上很有效的解决方法是添加:response.setCharacterEncoding("UTF-8");解决不了,后来又搜到一条解决方法是:respnse.setHeader("content-type","text/html;charset=UTF-8");两句都填上,后来终于解决了这个问题;其实我们应该思考一下本质;问题1:我们这里先来说明一下错误的原因,下图是显示乱码的流程图:response.setContentType("text/html;charset=UTF-8");目的是为了控制浏览器的行为,即控制浏

5、览器用UTF-8进行解码;response.setCharacterEncoding("UTF-8");的目的是用于response.getWriter()输出的字符流的乱码问题,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据以UTF-8解码后发向浏览器;解决方案流程图:问题2问题代码如下:[java]viewplaincopyprint?1.protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponserespo

6、nse)throwsServletException,IOException{2.PrintWriterout=response.getWriter();3.Stringdata="博客";1.out.println(data);2.}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();Stringdata="博客";out.prin

7、tln(data);}浏览器输出:??原因:"博客"首先被封装在response对象中,因为IE和WEB服务器之间不能传输文本,然后就通过ISO-8859-1进行编码,但是ISO-8859-1中没有“博客”的编码,因此输出“??”表示没有编码;错误代码流程图:而解决方案是:response.setCharacterEncoding("GB2312");设置response使用的码表解决方案流程图:补充:通过标签模拟response头;等价于respo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。