`
ttitfly
  • 浏览: 622523 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

字符集问题的过滤器解决办法

    博客分类:
  • java
阅读更多
EncodingFilter.java

package com.util;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;

/**
 * <p>Title: 字符编码集过滤</p>
 *
 * <p>Description:字符编码集过滤 </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: LEEMENZ</p>
 *
 * @version 1.0
 */
public abstract class EncodingFilter implements Filter{

   //构造
  public EncodingFilter()
  {
    config = null;
    targetEncoding = "ASCII";
  }
    /**
     *初始化过滤器,和一般的Servlet一样,它也可以获得初始参数。
     */
  public void init(FilterConfig config)
          throws ServletException
  {
    this.config = config;
    targetEncoding = config.getInitParameter("encoding");
  }
  //销毁过滤器
  public void destroy()
  {
    config = null;
    targetEncoding = null;
  }

    /**
      *进行过滤处理,这个方法最重要,所有过滤处理的代码都在此实现。
      */
  public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
          throws IOException, ServletException
  {
    HttpServletRequest request = (HttpServletRequest) srequest;
    request.setCharacterEncoding(targetEncoding);
    sresponse.setContentType("text/html;charset=UTF-8");//这里就是你要设置的字符集要改变就改这里。
    chain.doFilter(srequest, sresponse);  ///派发请求
  }

  private FilterConfig config;
  private String targetEncoding;
}


下面添加到web.xml中:

     <filter>
     <filter-name>EncodingFilter</filter-name> 
     <filter-class>com.util.EncodingFilter</filter-class>     
    </filter>
     
    <filter-mapping> 
       <filter-name>filter</filter-name> 
       <url-pattern>/*</url-pattern>  //这里是过滤本域下的所有页面
     </filter-mapping>

这样处理的话基本上就可以解决问题了。
分享到:
评论

相关推荐

    JSP存到数据库乱码解决办法

    除了配置过滤器外,还需要确保数据库连接时也使用正确的字符集。例如,在使用JDBC连接MySQL数据库时,可以在连接字符串中指定字符集: ```java String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&...

    Struts2乱码终极解决办法

    - 还可以在过滤器中手动设置字符集,例如在`init()`方法中设置: ```java request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); ``` #### 四、注意事项 1. **一致性...

    在程序开发中的乱码问题解决办法

    ### 在程序开发中的乱码问题解决办法 #### 知识点概述 在程序开发过程中,中文乱码问题一直是困扰很多开发者的一大难题。特别是在涉及到不同编码格式处理时,如果不注意编码设置,很容易出现乱码现象。本文将从多...

    乱码的各种解决办法

    // 设置字符集 servletRequest.setCharacterEncoding(encoding); // System.out.println("CharsetEncodingFilter.doFilter------begin"); filterChain.doFilter(servletRequest, servletResponse); // System....

    J2EE平台下的乱码问题分析及解决

    解决这个问题的办法是要确保源文件的编码格式与编译器或解释器的编码设置一致。如果使用的是IDE(集成开发环境),则应在IDE中设置正确的文件编码。在命令行中编译时,可以通过指定编译器的编码参数来确保编码一致。...

    JSP中乱码解决办法

    具体做法是在获取参数前调用`request.setCharacterEncoding()`方法,指定字符集为GBK或其他所需编码格式。示例代码如下: ```jsp request.setCharacterEncoding("GBK"); %&gt; ("info")%&gt; ``` #### 2. 实现过滤器...

    Java乱码问题解决

    - 使用过滤器(Filter)统一设置请求的编码格式,例如通过自定义过滤器`SetCharacterEncodingFilter`: ```xml &lt;filter-name&gt;SetCharacterEncoding &lt;filter-class&gt;...

    doGet()方法中文乱码问题的解决.doc

    3. **过滤器无效**:在尝试使用过滤器(Filter)来统一字符编码时,发现对于`doGet()`方法并不生效,这主要是因为过滤器是在请求到达Servlet之前就已经执行完毕,而`doGet()`方法的特殊性使得其不受过滤器影响。...

    struts下的汉字乱码问题

    一种解决办法是创建一个新的Servlet类(如`MyActionServlet`),继承自`ActionServlet`,并在`process()`方法中调用`request.setCharacterEncoding("gb2312")`来设定请求的字符编码。然后在`web.xml`中将`Action...

    乱码解决,简单小结

    #### 三、常见问题及解决办法 1. **GET请求乱码** - GET请求中的参数通常出现在URL中,因此不能通过`request.setCharacterEncoding()`来设置编码。可以通过在前端对参数进行编码,或者在后端解析时指定编码方式来...

    页面间跳转乱码

    最根本的解决办法是在整个Web应用中使用统一的字符编码,一般推荐使用UTF-8,因为它是国际上广泛接受的标准之一,可以支持世界上几乎所有语言的文字。 1. **设置服务器端编码**:可以在服务器端通过配置文件或者...

    jsp和servlet操作mysql中文乱码问题的解决办法

    解决乱码问题的关键在于统一整个数据流转过程中的编码格式,通常选择UTF-8作为标准编码,因为它能支持包括中文在内的几乎所有字符集。 针对乱码问题,可以分为以下几种情况来进行处理: 1. 如果乱码问题出现在JSP...

    避免c++builder常见错误.pdf

    - **解决办法**: 关闭`CachedUpdates`或在应用过滤器前完成更新操作。 **6.4 如果数据集的Filtered为真,不要调用ApplyUpdates** - **问题描述**: 在数据集过滤的情况下调用`ApplyUpdates`可能导致数据丢失。 - **...

    知识共享-jsp乱码处理精解(雷惊风).

    - 实现一个过滤器(Filter),用于统一设置字符集为GBK或UTF-8等支持中文的编码。在Tomcat的webapps/servlet-examples目录下有一个名为`SetCharacterEncodingFilter`的示例,可以作为参考。将这个类的`.class`文件复制...

    javaweb项目中乱码的处理

    在探讨解决办法之前,我们先来了解一下乱码产生的原因。通常情况下,乱码是由于客户端提交的数据与服务端接收数据的编码格式不一致造成的。例如,客户端是以UTF-8编码提交数据,而服务端却是以GBK编码进行解码处理,...

    Javaweb笔记

    - 统一设置字符集,如在`web.xml`中配置过滤器统一将请求的编码设置为UTF-8。 - 修改Tomcat服务器配置文件中的字符集编码。 #### 六、系统流程与状态管理 **1. 流程控制** - **流程控制**:在处理用户的登录、...

    关于乱码问题简单分析

    在探讨解决办法之前,我们需要了解导致JSP乱码的原因。通常来说,乱码主要由以下几个方面引起: 1. **页面编码设置不一致**:如果JSP页面的声明编码与浏览器接收数据的编码不一致,则会导致乱码。 2. **表单提交的...

    java web 开发乱码汇总

    - 使用Spring框架自带的`CharacterEncodingFilter`过滤器来统一设置请求的字符编码,但需要注意它仅能处理POST请求,GET请求需另外处理。 - 在控制器方法中通过`request.setCharacterEncoding("UTF-8")`来设置请求的...

    struts2 中文乱码的解决办法分享

    以下是对Struts2中文乱码解决办法的详细说明: 1. **创建Filter** 为了解决这个问题,首先需要创建一个自定义的Filter,它的作用是设置请求的字符编码。创建一个名为`SetCharacterEncodingFilter`的类,这个类实现...

    oracle biee常见问题解答

    解决此类问题的方法包括检查字体设置是否支持中文字符集,以及确保数据源的编码与BIEE环境一致。 **2. 图形中“上”字、“名”字和“作”字的链接错误** - **解决办法**:此类问题可能是由于图表中的超链接配置不...

Global site tag (gtag.js) - Google Analytics