`
peryou
  • 浏览: 30836 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多

当你用尽了网上的方法还是解决不了乱码问题,或是嫌网上的解决方法太麻烦时,你想到了过滤器,当您辛辛苦苦写了一个过滤器,或是用了Spring的过滤器还是没解决问题时,那么你就会很恼火,我最近就遇上这么一个问题,用尽了网上的方法,spring设置的过滤编码也是UTF-8,但就是不起作用,如下:

 <filter>
        <filter-name>SetCharacterEncoding</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>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

的位置放错了,放到了WEB.XML 的最后,所以我设置的过滤器根本就没起到作用,改变了一下位置

<filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>紧紧的放在

 

<filter>
        <filter-name>SetCharacterEncoding</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>的后面,我的乱码问题终于解决了。

 

总结:web.xml中过滤器的设置,<filter-mapping>
最好紧紧的放在<filter>的后面,如下:

<filter>
        <filter-name>SetCharacterEncoding</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>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

这样或许就能解决你的问题。

0
0
分享到:
评论
7 楼 jinnianshilongnian 2013-01-22  
peryou 写道
jinnianshilongnian 写道
peryou 写道
jinnianshilongnian 写道
其实放在最前边的原因是,
request.setCharacterEncoding必须在通过request.getParameter之前调用,否则无效。

嗯 您说的这个我知道,但是我每次在调用request.getParameter("*")前加上this.getRequest().setCharacterEncoding("UTF-8");还是不起作用呢?
比如这样:
action中有如下代码:
this.getRequest().setCharacterEncoding("UTF-8");
String dwid = this.getRequest().getParameter("dwmc");
得到的还是乱码。

嗯,这是我之前总结的web应用中文乱码解决方案;(如果你是GET请求默认.setCharacterEncoding是不起作用的)
http://www.iteye.com/topic/1121242#2322208



嗯谢谢您的回答,看了您的博客感谢,我的是POST请求,tomcat中也配置了,页面中也设置了,java代码中也设置了,但就是不起作用,所以很恼火呵呵,但我的问题最后解决确实是因为过滤器设置的不对。

嗯 以我目前看到的就是顺序问题造成的 也就是刚开始说的
6 楼 peryou 2013-01-22  
jinnianshilongnian 写道
peryou 写道
jinnianshilongnian 写道
其实放在最前边的原因是,
request.setCharacterEncoding必须在通过request.getParameter之前调用,否则无效。

嗯 您说的这个我知道,但是我每次在调用request.getParameter("*")前加上this.getRequest().setCharacterEncoding("UTF-8");还是不起作用呢?
比如这样:
action中有如下代码:
this.getRequest().setCharacterEncoding("UTF-8");
String dwid = this.getRequest().getParameter("dwmc");
得到的还是乱码。

嗯,这是我之前总结的web应用中文乱码解决方案;(如果你是GET请求默认.setCharacterEncoding是不起作用的)
http://www.iteye.com/topic/1121242#2322208



嗯谢谢您的回答,看了您的博客感谢,我的是POST请求,tomcat中也配置了,页面中也设置了,java代码中也设置了,但就是不起作用,所以很恼火呵呵,但我的问题最后解决确实是因为过滤器设置的不对。
5 楼 jinnianshilongnian 2013-01-22  
peryou 写道
jinnianshilongnian 写道
其实放在最前边的原因是,
request.setCharacterEncoding必须在通过request.getParameter之前调用,否则无效。

嗯 您说的这个我知道,但是我每次在调用request.getParameter("*")前加上this.getRequest().setCharacterEncoding("UTF-8");还是不起作用呢?
比如这样:
action中有如下代码:
this.getRequest().setCharacterEncoding("UTF-8");
String dwid = this.getRequest().getParameter("dwmc");
得到的还是乱码。

嗯,这是我之前总结的web应用中文乱码解决方案;(如果你是GET请求默认.setCharacterEncoding是不起作用的)
http://www.iteye.com/topic/1121242#2322208
4 楼 masuweng 2013-01-21  
这个问题早些时候就遇到过,因为web.xml中初始化spring容器时,则会设计字符编码类型的
3 楼 masuweng 2013-01-21  
这个问题早些时候就遇到过了,
2 楼 peryou 2013-01-21  
jinnianshilongnian 写道
其实放在最前边的原因是,
request.setCharacterEncoding必须在通过request.getParameter之前调用,否则无效。

嗯 您说的这个我知道,但是我每次在调用request.getParameter("*")前加上this.getRequest().setCharacterEncoding("UTF-8");还是不起作用呢?
比如这样:
action中有如下代码:
this.getRequest().setCharacterEncoding("UTF-8");
String dwid = this.getRequest().getParameter("dwmc");
得到的还是乱码。
1 楼 jinnianshilongnian 2013-01-21  
其实放在最前边的原因是,
request.setCharacterEncoding必须在通过request.getParameter之前调用,否则无效。

相关推荐

    【Struts】设置字符编码过滤器,解决乱码问题收藏

    本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...

    字符编码过滤器

    总的来说,字符编码过滤器是Java Web开发中的必备工具,它可以确保数据在传输过程中的正确性,避免由于编码不一致导致的乱码问题。通过封装工具类,我们可以轻松地在项目中引入和使用这个功能,提高代码的可维护性...

    过滤器实现get请求乱码问题

    要解决这个乱码问题,我们可以按照以下步骤创建一个过滤器: 1. 创建Filter类:首先,我们需要创建一个实现了javax.servlet.Filter接口的类。在类中,我们需要重写doFilter()方法,这是过滤器的核心,它将在每次...

    JSP用过滤器解决request getParameter中文乱码问题.docx

    总的来说,通过在过滤器中设置合适的字符编码,我们可以有效地解决JSP应用中请求参数中文乱码的问题。需要注意的是,选择哪种字符编码取决于你的应用需求,不同的编码可能会适用于不同的环境和用户群体。此外,如果...

    ssh框架乱码过滤器Filter

    总结,SSH框架下的中文乱码问题主要通过自定义过滤器解决,设置合适的请求和响应的字符编码。同时,对于不同的数据提交方式,如表单和JS,需要采取相应的解决方案。在实际开发中,确保整个数据传输过程中的字符编码...

    拦截器解决中文乱码问题

    总的来说,理解字符编码原理,结合拦截器的灵活运用,可以有效地防止和解决Web应用中的中文乱码问题,提高用户体验。同时,良好的编码习惯和规范,以及对各种编码问题的敏感度,也是开发过程中不可或缺的一部分。

    解决struts2.1.6+spring+hibernate 中文乱码

    对于解决中文乱码问题,我们需要在`web.xml`中配置一个字符编码过滤器。 ##### 2.1 配置CharacterEncodingFilter ```xml &lt;filter-name&gt;encodingFilter &lt;filter-class&gt;org.springframework.web.filter....

    21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

    在Spring Boot框架中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们可以帮助我们实现一些自定义的处理逻辑,如数据校验、日志记录、请求拦截等。下面将详细讲解这两个概念及其在实际开发中的...

    jsp中FilterDome(乱码过滤器源代码)

    `FilterDome`是一个具体的Filter实现,通常用来解决字符编码问题,即乱码过滤器。在处理中文或其他多语言字符时,乱码问题时常出现,`FilterDome`就是为了解决这个问题而设计的。下面将详细介绍`FilterDome`的工作...

    如何在Spring中解决中文乱码的方法.doc

    - 确保过滤器配置在其他过滤器之前加载,以保证其能正确处理字符编码。 - 如果使用了Struts框架,需要确保Struts的配置文件(如`struts-config.xml`)中也正确地设置了字符集,以避免不一致的问题。 #### 数据库端...

    java字符编码监听器

    在Java Servlet规范中,提供了`SetCharacterEncodingFilter`这样的过滤器,用于确保请求参数和响应内容的正确编码,避免因为编码不一致导致的数据乱码问题。 1. **字符编码的重要性** 在网络通信中,字符编码扮演...

    spring3 MVC GET提交方式乱码解决

    总结,解决Spring 3 MVC中GET提交方式乱码问题,主要涉及服务器端的字符编码过滤器配置、Controller方法的参数接收以及前端页面的编码设置。理解HTTP协议和字符编码原理,以及正确配置Spring MVC,将有助于避免此类...

    MySpringMVC-字符乱码处理.rar

    另一个解决乱码问题的方法是在过滤器(Filter)中处理。创建一个自定义过滤器,如`CharacterEncodingFilter`,并配置在Spring MVC的过滤链中,以强制设置请求和响应的编码。 6. **国际化与本地化**: 在处理多...

    struts2.1.6解决乱码 补充

    为了解决这个问题,一种常见的做法是通过过滤器(Filter)来统一设置请求的字符编码。在Struts2项目中,可以使用`CharacterEncodingFilter`来实现这一目的。 #### 三、CharacterEncodingFilter配置 根据提供的部分...

    乱码过滤类和配置使用方法

    下面是一个简单的示例,展示如何在Spring Boot中创建一个乱码过滤器: ```java import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @Component public class ...

    JAVAEE过滤器的使用

    过滤器在Java Web应用中扮演着重要角色,可以实现如数据验证、登录检查、字符编码转换、日志记录等多种功能。本文将深入探讨JAVAEE过滤器的使用。 1. **过滤器的基本概念** - **Filter接口**:Java Servlet API...

    FORM表单中文乱码问题分析与解决

    例如,我们可以使用Spring中的字符集过滤器类来指定解码方式为UTF-8。这将使服务器在接收到FORM表单中的数据时自动使用UTF-8对中文进行解码。 对中文的编码方式和解码方式是解决中文乱码问题的关键。使用正确的编码...

    struts中文乱码问题解决详细步骤

    1. **添加过滤器**:首先,我们需要在Web应用的`web.xml`文件中添加一个`CharacterEncodingFilter`,这个过滤器会在请求进入控制器之前设置正确的字符编码。 ```xml &lt;filter-name&gt;characterEncodingFilter ...

    Flex解决乱码问题

    例如,在Java Web应用中,可以通过修改`.jsp`文件的页面编码,或者在Spring框架中配置字符集过滤器来实现这一点。 #### 3. 使用XMLHttpRequest处理数据传输 当通过Ajax技术发送请求获取数据时,应确保请求头中包含...

    过滤器简单使用代码!!

    在实际应用中,你需要将这些过滤器配置到`web.xml`或使用Spring Boot的`@WebFilter`注解,以便在应用程序启动时自动注册它们。此外,还可以使用过滤器链,将多个过滤器串联起来,按顺序执行,以满足更复杂的业务需求...

Global site tag (gtag.js) - Google Analytics