关于JSP乱码问题剖析总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于JSP乱码问题剖析总结

关于JSP乱码问题剖析总结      摘要:在利用Servlet/JSP技术开发Java Web应用程序的时候经常会遇到乱码的问题,包括服务器端的提交,以及通过浏览器的表示等。本文首先分析了从JSP到浏览器的执行过程,给出了jsp本身表示时产生乱码的原因及对策,然后在此基础上针对JSP应用中出现的一些常见的乱码问题,并提出了一些对应的解决方案,希望给开发人员在编码时提供帮助。   关键词:JSP;乱码;WEB开发   中图分类号:TP3文献标识码:A文章编号:1007-9599 (2012) 06-0000-02   一、问题提出   基于jsp的项目开发中经常遇到乱码的问题,包括:jsp自身页面固定文字的在浏览器上表示时的乱码,从客户端通过浏览器提交到服务器端时的乱码,以及服务器端登陆到DB中的乱码等等。对于初学者来说,这是一件令人非常头疼的事,无从下手,本文通过分析jsp的执行原理,在此基础上给出了一些乱码问题的解决方案,供大家参考。   二、从JSP到浏览器的执行过程   从服务器端的jsp源文件如何执行到客户端的html文件的呢?其中涉及到编码相关的过程如下。   (1)以某种编码格式保存jsp文件,例如GBK。   (2)Jsp/Servlet引擎提供的jsp转换工具(JSPC),现根据JSP文件中的%中指定的pageEncoding将jsp转化成java文件,如果jsp文件中没有指定pageEncoding,则取JVM的默认的设置file.encoding,一般情况下,这个值是ISO-8859-1。生成的Java文件的位置一般保存在   $CATALINA_HOME\work\Catalina\localhost\Context名的下面。   实际上,生成的JSP中的内容是按照pageEncoding映射到unicode,并通过utf-8格式写到java文件中的。   (3)把临时文件编译成class文件。   (4)class文件执行时,先从class文件中用readUTF读出字符串,在内存中是unicode编码。   (5)根据pageEncoding,把unicode转化成字节流。   (6)把字节流输出到浏览器(ie等)中,并根据jsp中的    %中的Jsp-charset设置浏览器的编码格式。是通过http的header部实现的。   另外,HTML中有个标签中也指定了charset,如果jsp中没有指定则以这个为准。浏览器按照此标签来辨认html内容的编码格式。   总结,从jsp源文件到客户端html的编码过程为:pageEncoding到unicode到utf-8到unicode到Jsp-charset,由于unicode和utf-8之间的相互转化抵消。因此乱码产生的原因基本上有以下两种:   (1)jsp中pageEncoding和Jsp-charset设置不一致。   (2)画面表示中存在jsp中定义的字符集(pageEncoding或者Jsp-charset)中以外的文字。   三、解决对策   针对以上分析,解决jsp本身表示时出现乱码的对策有两种。   (1)使jsp中pageEncoding和Jsp-charset设置。   (2)如果画面表示时有字符集以外的文字存在的话,修改jsp的字符集设置。使出现乱码的字符包含在设定的字符集内。例如:繁体字:試聽,在GB2312字符集范围外,这种场合,字符集就需要修改成UTF-8或big5都可以。   四、web系统中常见的乱码原因分析及对策   以jsp为例,一般的web系统的执行过程基本上包括以下步骤:   浏览器→Servlet→DB→Servlet(jsp)→浏览器   当出现编码首先要判断哪个过程出现了乱码,可以通过debug和输出log的方式来判断。   下面按照每个阶段分析各阶段出现的乱码问题。   (1)在浏览器→Servlet出现乱码的时候,即从客户端向服务器端提交时出现了乱码,这种情况按照提交方式的不同,需要分为两类。   1-1 get方式提交,例如:http://XXX/search/offer_search.do?keywords=中国   乱码的原因是tomcat的内部编码格式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码。因此,它的处理方式仅仅转换这个中文字符串或者设置JSP页面显示编码都是不能解决问题的,需要修改Tomcat服务器的配置文件才能解决问题。在这里修改Tomcat的conf目录下的server.xml配置文件,具体改后的代码如下:   Co

文档评论(0)

151****1926 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档