您的位置:首页 > 运维架构 > Tomcat

设置Tomcat及Weblogic字符编码,解决数据提交的乱码问题

2011-08-24 16:17 295 查看
【关键字】 Tomcat容器 中文 字符编码 乱码 Weblogic容器 服务器

【正文】因为编码方式的不同在使用Tomcat容器时会出现提交到Servlet的中文是乱码的方式,而且Tomcat5.x对于POST和GET的方式处理似乎还有不同,POST方式是采用Filter的方式即可,怎样能够处理GET方式中文提交乱码的问题呢?

可以采用配置服务器字符编码的方法,具体操作如下:
1、打开Tomcat安装目录中的conf目录
2、修改server.xml中的connector一个子项,具体可能类似如下:

<Connector port="8001" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />
在其中添加URIEncoding="GBK" ,或者是其他的编码方式,变成如下:

<Connector port="8001" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true"URIEncoding="GBK"
/>
3、停止Tomcat服务,重新启动Tomcat服务即可。

【另附Weblogic容器处理编码的方式】

处理Weblogic容器的编码比较简单,只需要在站点的web.xml中配置一行如下的代码即可。

<context-param> <param-name>weblogic.httpd.inputCharset./*</param-name> <param-value>GBK</param-value> </context-param>
【另附Tomcat处理POST提交乱码的方式】

1、首先在web.xml中配置过滤器

<filter> <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class> cn.cublog.jedliu.SetCharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param>
</filter>
<filter-mapping> <filter-name>SetCharacterEncodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>
2、在cn.cublog.jedliu包中SetCharacterEncodingFilter是用于来实现编码的过滤器。

publicclass SetCharacterEncodingFilterimplements
Filter{

protected Stringencoding=
null;

protected FilterConfig filterConfig
= null;

protected boolean ignore= true;

public voiddestroy(){

this.encoding=null;

this.filterConfig=null;

}

public void doFilter(ServletRequestrequest, ServletResponse response,FilterChain
chain)

throws IOException, ServletException{

if (ignore||(request.getCharacterEncoding()==null)){

String
encoding = selectEncoding(request);

if (encoding!=null)

request.setCharacterEncoding(encoding);

}

chain.doFilter(request, response);

}

public voidinit(FilterConfig filterConfig)throws
ServletException {

this.filterConfig= filterConfig;

this.encoding= filterConfig.getInitParameter("encoding");

String value= filterConfig.getInitParameter("ignore");

if (value==null)

this.ignore= true;

else if(value.equalsIgnoreCase("true"))

this.ignore= true;

else if(value.equalsIgnoreCase("yes"))

this.ignore= true;

else

this.ignore= false;

}

protected String selectEncoding(ServletRequestrequest){

return (this.encoding);

}

}

发表于: 2007-08-15,修改于: 2007-08-15 09:45 已浏览4146次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: