`
peryou
  • 浏览: 29902 次
  • 性别: 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之前调用,否则无效。

相关推荐

    spring+shiro+ehcache例子

    在web.xml中配置字符过滤器 5:项目运行信息查看 在web.xml中配置log4j信息打印 (需要自己将log4j的配置文件给打开) 三: 配置文件 查看/src/config/ ,配置文件可观察文件名称理解 四: 登录名为2:可以...

    数据库乱码的小技巧

    近用ssh框架和mysql数据库写项目的时候,老是出现中文乱码,根据网上的各种策略,使用spring自带的字符过滤器啊,设置页面编码啊,设置数据库编码啊都设置好为UTF-8了,还是出现中问乱码,后来在spring的配置文件...

    ssh(structs,spring,hibernate)框架中的上传下载

     以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。  工程...

    Forum-Community:使用Spring+SpringMVC+Hibernate开发一个论坛社区

    ThisIsUs Community ...并提供了一个字符转换编码过滤器防止中文乱码.服务层使用Spring4.0,持久层使用Hibernate.使用Maven构建项目. 系统架构 社区总共为4个模块,为用户管理,社区管理,版块管理以及社区基

    《MyEclipse 6 Java 开发中文教程》前10章

    8.7 创建Filter(过滤器) 152 8.8 创建数据库访问层(DAO) 155 8.9 修改Servlet调用后台类 158 8.10 发布,重新发布,运行和测试应用 159 8.11 调试JSP应用 160 8.12 向现有Web项目添加Web开发功能 161 8.13高级设置 ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    5.4.5 实现字符编码过滤器 5.5 实战检验 5.5.1 通过Servlet实现录入用户信息 5.5.2 应用过滤器实现网页计数器 5.6 疑难解惑 5.6.1 访问Servlet出现404错误 5.6.2 修改Servlet无效 5.6.3 创建过滤器并没有实现过滤...

    Java学习笔记-个人整理的

    {1.4.4}转义字符}{25}{subsection.1.4.4} {1.4.5}Boolean 布尔值}{25}{subsection.1.4.5} {1.5}基本类型变量的初始值}{26}{section.1.5} {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {...

    Java面试宝典2020修订版V1.0.1.doc

    11、过滤器有哪些作用? 35 12、JSP的常用指令? 35 13、JSP和Servlet中的请求转发分别如何实现? 35 14、JSP乱码如何解决? 36 15、session 和 application的区别? 36 16、jsp有哪些内置对象?作用分别是什么? 36 ...

Global site tag (gtag.js) - Google Analytics