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

中文乱码处置办法(新手来)

2011-12-25 
中文乱码处理办法(新手来)-------------------JAVA代码------------------Java codepackage toolsimport

中文乱码处理办法(新手来)
-------------------JAVA代码------------------

Java code
package tools;import javax.servlet.http.HttpServlet;import javax.servlet.Filter;import javax.servlet.FilterConfig;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.FilterChain;public class EncodingFilter extends HttpServlet implements Filter{    private FilterConfig config = null;    private String targetEncoding = "GBK";    public void init(FilterConfig filterConfig)    {        this.config = filterConfig;        this.targetEncoding = config.getInitParameter("encoding");    }    public void destroy()    {        config = null;        targetEncoding = null;    }    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,                         FilterChain filterChain)    {        ServletRequest request = (ServletRequest) servletRequest;        try        {            request.setCharacterEncoding(targetEncoding);            filterChain.doFilter(servletRequest, servletResponse);        }        catch (Exception ex)        {            ex.printStackTrace();        }    }}


------------web.xml------------
Java code
 <filter>    <filter-name>EncodingFilter</filter-name>    <filter-class>[color=#FF0000]db.EncodingFilter[/color]</filter-class>    <init-param>      <param-name>encoding</param-name>      <param-value>[color=#0000FF]GBK[/color]</param-value>    </init-param>  </filter>   <filter-mapping>    <filter-name>EncodingFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>


-------------------------------------------

红色是类的路径,蓝色是编码,注意和jsp页面上的要一致

添加、查询数据都没问题,有没有有效请用过再说,希望能帮新学的XDJM们不再受到乱码问题的困扰,有什么不足也请老大们指出

附:只在sqlserver2000和mysql中试验过

[解决办法]
写在xml文件里面,跟servlet配置一样,没有自动生成,要自己添加。比如:
XML code
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"    version="2.4">        <filter>        <filter-name>HelloFilter</filter-name>        <filter-class>com.tarena.filter.HelloFilter</filter-class>    </filter>     <filter-mapping>        <filter-name>HelloFilter</filter-name>        <url-pattern>/hello</url-pattern>    </filter-mapping>         <filter>        <filter-name>AppendFilter</filter-name>        <filter-class>com.tarena.filter.AppendFilter</filter-class>    </filter>     <filter-mapping>        <filter-name>AppendFilter</filter-name>        <url-pattern>/hello</url-pattern>    </filter-mapping>         <filter>        <filter-name>CharacterEncodingFilter</filter-name>        <filter-class>com.tarena.filter.CharacterEncodingFilter</filter-class>        <init-param>             <param-name>charset</param-name>            <param-value>gbk</param-value>        </init-param>     </filter>     <filter-mapping>        <filter-name>CharacterEncodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>         <filter>        <filter-name>AuthenticationFilter</filter-name>        <filter-class>com.tarena.filter.AuthenticationFilter</filter-class>    </filter>     <filter-mapping>        <filter-name>AuthenticationFilter</filter-name>        <url-pattern>/a</url-pattern>    </filter-mapping>         <listener 


[解决办法]
不知道搂主在weblogic下试过没有,这个过滤器方法在WEBLOGIC下启动就会报错.
[解决办法]
request.setCharacterEncoding("UTF-8"); 
respose.setCharacterEncoding("UTF-8"); 
一般用这个

[解决办法]
一般我都是在web.xml里面写filter,用过滤器进行乱码过滤,
有时候麻烦一点在servlet或者action中这样设置:
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
只有用这种方法不能解决中文乱码的时候才会用过滤器做的
[解决办法]

探讨
顺便说一下:
过滤器并不能解决url传递中文参数的问题
url传递还有用java.net.URLEnoder.encode()
和URLDecoder.decode()

热点排行