- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Tomcat5.5中文乱码完美解决方案
新手学习Web编程的时候大多数都是使用Tomcat作为服务器,其中面临的一个最主要的问题就是中文乱码问题。JAVA阵营的工具不如.NET阵营那样容易使用,我们必须手动的做一些修改才能让Web页面支持中文。幸运的是,Tomcat发展到今天的5.5版本,对于非英文的支持已经相当不错了,你只需做很少的很简单的修改就可以让网页支持中文,下面我们就来看一看该如何做修改。
??? 首先,对于所有的页面应该指定为GBK编码,也就是包含如下指令:
??? %@ page contentType=text/html;charset=GBK language=java %
??? 第二步,修改Tomcat目录下的web.xml文件,在我电脑上的路径为C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml。在这个文件里有一个Connector节点,为其增加一个属性URIEncoding属性,并为该属性赋值为GBK,修改结果如下:
Connector牋port=80牋maxHttpHeaderSize=8192mc牋牋牋牋牋牋牋爉axThreads=150爉inSpareThreads=25爉axSpareThreads=75er.xml那样容易牋牋牋牋牋牋牋爀nableLookups=false爎edirectPort=8443燼cceptCount=100r.xml那样容易使牋牋牋牋牋牋牋燾onnectionTimeout=20000燿isableUploadTimeout=true100r.xm牋牋牋牋牋牋牋燯RIEncoding=GBK?0000燿isa
牋?牋牋注意最后一行,也就是与众不同的绿色的那一行,是需要我们手动添加的。
??? 第三步,添加一个Filter用于转码。
??? 对于Filter该怎么写,完全不用你操心,Tomcat自带一个非常完美的例子,你只需要把该例子的代码原封不动的copy到你自己的类里面就OK了,简单吧!!!
在我的系统中,该例子位于C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.java。
方便起见,我把该类的代码贴出来,并将其英文注释进行简单的汉化,你使用的时候复制我的代码也是一样有效:
?
import?java.io.IOException;import爅avax.servlet.Filter;汉import爅avax.servlet.FilterChain;用import爅avax.servlet.FilterConfig;的import爅avax.servlet.ServletException;制import爅avax.servlet.ServletRequest;;import爅avax.servlet.ServletResponse;import爅avax.servlet.UnavailableException;码public燾lass燬etCharacterEncodingFilter爄mplements燜ilter?..{apps\//?你需要转换的编码,对于我们,当然希望他的值为”GBK”了//不过不用你操心,后面会对其进行设置????protected?String?encoding?=?null;//配置文件,根据web.xml中的配置内容自动初始化,不用你操心牋牋protected燜ilterConfig爁ilterConfig?爊ull;ments燜//是否忽略客户端指定的编码规则。True表示忽略。//当然要忽略,因为我们要自己指定编码规则嘛。GBK、GBK、GBK~~~牋牋protected燽oolean爄gnore?爐rue;GBK~~~//当这个过滤器被销毁的时候由系统来调用,不用管他牋牋public爒oid燿estroy()?..{rue;牋牋牋牋this.encoding?爊ull;{rue;牋牋牋牋this.filterConfig?爊ull;e;GBK牋牋}th//真正的转码操作由这个函数完成//内容很简单,就是将encoding的值赋给request//至于encoding等于啥?由下面的selectEncoding函数决定????public?void?doFilter(ServletRequest?request,燬ervletResponse爎esponse,
文档评论(0)