首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

web中关于中文乱码的解决办法

2012-10-06 
web中关于中文乱码的解决方法?web的工程中,有时会遇到编码的错误,在这儿就写一下我读到的问题,以及解决方

web中关于中文乱码的解决方法

?

web的工程中,有时会遇到编码的错误,在这儿就写一下我读到的问题,以及解决方法。

?

解决方法1:加入过滤器。

?

步骤: 定义一个过滤器,并在web.xml中声明。(假如你没有用到spring架构)

? ? ? ? ? ? ? ? ?(如果你用到了Spring架构,则就不需要定义一个过滤器,因为spring自身会有一个过滤器,只需要在web.xml中引用就可以了)

?

过滤器如下:

import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class SetCharacterEncodingFilter implements Filter {protected String encoding = null;protected FilterConfig filterConfig = null;protected boolean ignore = true;public void init(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;elsethis.ignore=false;}public void doFilter(ServletRequest request, 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 void destroy() {this.encoding = null;this.filterConfig = null;}protected String selectEncoding(ServletRequest request) {return (this.encoding);}}

?

在web.xml中引用(没有用到spring时的web.xml配置)

<filter>        <filter-name>encodingFilter</filter-name>        <filter-class>org.common.util.SetCharacterEncodingFilter</filter-class>        <!-- 变量设置,将SetCharacterEncodingFilter类中的变量进行设置,系统将自动将变量赋值 -->        <init-param>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param>    </filter>

?

(spring的配置)

? ??

因为spring中自带过滤器,所以仅需要在web.xml中引用就可以了

?

<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
?

?

?

但是有的时候,即使是配置了过滤器,仍然有乱码。这时就需要配置tomcat了

?

解决方法2:配置tomcat。

?

在tomcat的service.xml中的Connector节点,加入一句话:useBodyEncodingForURI="true" ?URIEncoding="UTF-8"

?

举例:(最后一句话)

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->    <Connectorport="8080"               maxHttpHeaderSize="8192"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"               enableLookups="false" redirectPort="8443" acceptCount="100"               connectionTimeout="20000" disableUploadTimeout="true"   useBodyEncodingForURI="true"  URIEncoding="UTF-8"/>

?

这样,大部分的中文乱码均可以解决了。

?

热点排行