- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java,Web项目开发中的中文乱码问题与对策
张彦芳
摘要:在当下的网络时代,Java Web技术发展迅速,已经成为市场上主流的web开发技术之一,为越来越多的web应用开发人员所使用。但是,在进行Java Web项目开发时,经常出现的中文乱码问题给应用开发带来了不少的麻烦。该文具体分析了Java Web项目开发中常见的中文乱码问题,并给出了相应的对策。
关键词:中文乱码;编码;解码;Servlet
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)09-0096-02
1 引言
目前,网络高速发展,web开发应用非常广泛,Java Web成为市场上非常流行的web开发技术之一,越来越多的人开始学习并使用Java web开发项目。但是,我们在使用Java web技术开发项目时不可避免用到中文,在Java web中使用中文经常会出现中文乱码问题,严重影响了项目的开发与应用,解决中文乱码问题迫不及待。本文具体分析了实际应用中遇到的中文乱码问题,并给出了相应的对策。
2 产生中文乱码的原因
计算机中存储数据都是以二进制的形式存储。当我们输入中文字符时,需要把中文字符转换成二进制进行存储,这时就会发生字符和字节之间的转换。将字符转换成字节的过程,我们称为编码,将字节转换成字符的过程称为解码。无论是编码还是解码,字符与字节之间的转换都是通过查码表来完成的,如果在解码时采用的码表和编码时采用的码表不一致,就会产生乱码的问题。
3 Java Web中常见的中文乱码问题与对策
3.1访问JSP页面时出现中文乱码
通过浏览器访问JSP页面时,经常会在浏览器中看到乱码,出现乱码的根本原因是使用的编码不支持中文。在JSP页面中使用的编码默认为“IS0-8859-1”,这种编码方式不兼容中文字符。常用的支持中文字符的编码有GB2312,GBK和UTF-8。我们可以在JSP文件的page指令中将编码修改为支持中文的编码即可。例如: %@page pageEncoding=”UTF-8”%.
这种方式,每次新建JSP文件时,都要在page指令中设置编码,比较麻烦。如果使用的是Eclipse软件开发java Web项目的话,可以直接修改JSP页面的默认编码为UTF-8。方法为:在Windows菜单下选择preferences,在其级联菜单下选择Web,并在web的子菜单JSP Files中谩置Encoding为UTF-8,这样设置后,再新建JSP文件,文件默认的编码就变为UTF-8了。
3.2 中文输出乱码问题
在Servlet中输人中文字符时,如果在浏览器页面看到的内容是若干个“?”,就说明产生了中文乱码。那么,这个乱码是如何产生的呢?当我们使用response对象的输出流进行编码时,采用的是IS0-8859-1的字符码表,这个字符表是不支持中文的,这时在IS0-8859-1字符码表中就查不到中文字符对应的码,当查不到的时候就会给这些中文字符统一编码为对应个数的“63”。浏览器接收到数据后进行解码,浏览器解码时会采用默认的支持中文字符的字符码表GB2312,在GB2312字符表中,“63”对应的字符是“?”,将“63”解码为“?”,就产生了乱码。具体分析过程见图1。
解决这种输出乱码问题有两种方法:一是可以使用HttpServletResponse接口提供的setCharacterEncoding0方法,设置字符的编码方式。我们知道UTF-8字符集支持中文,我们通过代码设置字符的编码方式为字符码表UTF-8,在浏览器中设置浏览器的编码方式也为UTF-8,这样就能解决这个中文乱码问题。二是不管编码还是解码方式都使用HttpServletResponse对象提供的方法来设置。我们通过response.setCharactorEncod-ing(“UTF-8”);i置编码使用UTF-8字符码表。通过使用
response. setHeader(“Content-Type”,“text/html; charset=UTF-8”);设置浏览器使用UTF-8字符表进行解码,编码解码使用的码表一致了,就不会出现中文乱码问题。这两条语句的功能还可以通过一句代码来实现,即response.setContentTypef“text/html;charset=utf-8”1:
3.3 請求参数的中文乱码问题
在实际项目开发中,用户的信息常常经由表单来提交,用户在填写表单时,不可避免地要填写中文信息。当提交这些用户信息时,浏览器会传递这些表单信息。而浏览器在传递请求参数时,采用的编码是UTF-8,但是在解码的时候使用的是默认的字符集IS0-8859-1,这样就导致了乱码问题的出现。为了避免中文乱码的出现,可以通过HttpServletReq
文档评论(0)