今天给一家客户安装系统,用了新下载的Tomcat5.0,将web包麻利地配置上,一切那么顺利地完成后,然后给客户试用功能,丑事发生,居然输入的中文存盘后居然成乱码了,郁闷。原来系统在resin2、tomcat4.1下都很正常啊,怎么换了更新版本的tomcat就出问题了呢?没工夫研究,只好先拷贝自己机器上的resin到用户服务器上应付先:)
晚上回来研究一下,我的系统是这样处理中文录入的问题的,在所有servlet对request参数进行调用前,都调用了request.setCharacterEncoding("GBK");怎么会不好使呢?网上搜搜看有啥方案,嗯,处理中文问题还真一大把,很快就找到我的问题,在tomcat的server.xml里的Connector标签块里增加了URIEncoding=”GBK”就搞定了我系统中的中文问题。更多内容看看转载的人家的文章如何说:D
[@more@]-------------------
Tomcat 5中文问题
author:kiss__sky@163.com
-------------------
问题描述:
1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者??
2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用
原因:
1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(“gbk”))不起作用。
解决办法:
首先所有的jsp文件都加上:
1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)
1)只要把%TOMCAT安装目录%/ webappsservlets-examplesWEB-INFclassesfiltersSetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。
2)在你的web.xml里加入如下几行:
〈filter〉
〈filter-name〉Set Character Encoding〈/filter-name〉
〈filter-class〉filters.SetCharacterEncodingFilter〈/filter-class〉
〈init-param〉
〈param-name〉encoding〈/param-name〉
〈param-value〉GBK〈/param-value〉
〈/init-param〉
〈/filter〉
〈filter-mapping〉
〈filter-name〉Set Character Encoding〈/filter-name〉
〈url-pattern〉/*〈/url-pattern〉
〈/filter-mapping〉
3)完成.
2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
〈Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="GBK"/〉
2)重启tomcat,一切OK。
执行如下jsp页页测试是否成功
〈%@ page contentType="text/html;charset=gb2312"%〉〈%@ page import="java.util.*"%〉〈%
String q=request.getParameter("q"); q = q == null? "没有值" : q;
%〉〈HTML〉
〈HEAD〉
〈TITLE〉新闻列表显示〈/TITLE〉
〈META http-equiv=Content-Type content="text/html; charset=gb2312"〉
〈META http-equiv=pragma content=no-cache〉
〈body〉
你提交了:〈%=q%〉〈br〉
〈form action="tcnchar.jsp" method="post"〉
输入中文:〈input type="text" name="q"〉
〈input type="submit" value="确定"〉 〈br〉
〈a href="tcnchar.jsp?q=中国"〉通过get方式提交〈/a〉
〈/form〉
〈/BODY〉
〈/HTML〉
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/67736/viewspace-795061/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/67736/viewspace-795061/