欢迎来到天天文库
浏览记录
ID:34072247
大小:73.00 KB
页数:5页
时间:2019-03-03
《tomcat55中文乱码完美解决方案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、新手学习Web编程的时候大多数都是使用Tomcat作为服务器,其中面临的一个最主要的问题就是中文乱码问题。JAVA阵营的工具不如.NET阵营那样容易使用,我们必须手动的做一些修改才能让Web页面支持中文。幸运的是,Tomcat发展到今天的5.5版本,对于非英文的支持已经相当不错了,你只需做很少的很简单的修改就可以让网页支持中文,下面我们就来看一看该如何做修改。首先,对于所有的页面应该指定为GBK编码,也就是包含如下指令:<%@pagecontentType二"text/html;charset二GBK〃language二〃java〃%>第二步,修改Tomcat目录下的
2、web.xml文件,在我电脑上的路径为C:PrograniFilesApacheSoftwareFoundationTomcat5.5confserver.xml。在这个文件里有一个Connector节点,为其增加一个属性URIEncoding属性,并为该属性赋值为GBK,修改结果如下:〈Cormectorport二〃80〃maxHttpHeaderSize二〃8192〃maxThtcads二〃150"minSparcThrcads=zz25"maxSpareThreads=,,75,/enableLooklips二〃false"redirectPort=/
3、,8443〃acceptCount二〃100〃connectionTimeout=/z20000,zdisableUploadTimeout=/ztrue,zURIEncodin萨〃GBK〃/>注意最后一行,也就是与众不同的绿色的那一行,是需要我们手动添加的。第三步,添加一个Filter用于转码。对于Filter该怎么写,完全不用你操心,Tomcat自带一个非常完美的例子,你只需耍把该例子的代码原封不动的copy到你口己的类里面就0K了,简单吧!!!在我的系统中,该例子位于C:ProgramFiles'ApacheSoftwareFoundationTomcat5
4、.5webappsservlets-examplesWEB-INFclassesflitersSetCharacterEncodingFilter.java。方便起见,我把该类的代码贴出来,并将其英文注释进行简单的汉化,你使用的时候复制我的代码也是一样有效:importjava.io.IOException;importjavax.servlet.F订ter;importjavax.servlet.FiIterChain;importjavax.servlet.FiltcrConfig;importjavax.servlet.ServletExceptio
5、n;importjavax.servlet・ServletRequest;importjavax.servlet.ServletResponse;importjavcix.servlet.Unavai1eibleException;日田publicclassSetCharacterEncodingFilterimplementsFilter{II//你需要转换的编码,对于我们,当然希望他的值为”GBK”了I//不过不用你操心,后面会对其进行设置IprotectedStringencoding=null;丨//配置文件,根据web.xml中的配置内容自动初始化,不用你操
6、心IprotectedF订terConfigf订terConfig二null;II//是否忽略客户端指定的编码规则。True表示忽略。I//当然要忽略,因为我们要自己指定编码规则嘛。GBK、GBK、GBK-Iprotectedbooleanignore=true;II//当这个过滤器被销毁的吋候由系统来调用,不用管他publicvoiddestroy(){IIthis.encoding=null;Ithis・f订terConfig=null;I//真正的转码操作由这个函数完成I//内容很简单,就是将encoding的值赋给requestI//至于encoding等于啥
7、?由下面的selectEncoding函数决定publicvoiddoFiIter(ServletRequestrequest,ServletResponseresponse,FilterChainchain;/throwsIOExccption,ScrvletExccptionencoding//Conditionallyselectandsetthecharactertobeused-□内-null))•,)/ng);if(ignore
8、
9、(request.getCharactcrEncodingO二Stringencoding=selectE
此文档下载收益归作者所有