解决SpringMVC在IE页面返回乱码问题
来源:互联网 发布:罗技 淘宝 哪个是官方 编辑:程序博客网 时间:2024/06/04 19:56
问题导入:依旧是最近的那个毕业设计,在测试上传功能的浏览器兼容性的时候,发现ie下会有页面乱码,而其他浏览器都没有。
处理过程
根据IE的F12中的log提示,是因为http头信息中的编码替换了html文件中的编码。我最初的思路是设置Tomcat默认编码,但是我发现我已经在Server.xml中设置过,想到这里我想到了上篇文章的文件重命名的问题,准备去写个filter去修改http响应头,但是我突然明白,SpringMVC应该会处理过,但是为什么无效呢,这种成熟的框架不应该会有bug存在,于是我尝试在SpringMVC的xml中配置SourceHttpMessageConverter等转换器,都无效。
发现原因
后来发现web.xml是配置了编码处理的, 内容如下
<filter> <filter-name>encodFilter</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>encodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
于是我追踪源码:
public class CharacterEncodingFilter extends OncePerRequestFilter { private String encoding; private boolean forceEncoding = false; public void setEncoding(String encoding) { this.encoding = encoding; } public void setForceEncoding(boolean forceEncoding) { this.forceEncoding = forceEncoding; } @Override protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) { request.setCharacterEncoding(this.encoding); if (this.forceEncoding) { response.setCharacterEncoding(this.encoding); } } filterChain.doFilter(request, response); }}
根据源码展示发现只有在forceEncoding为true或请求中的编码头不存在时才会设置我们定义的编码,forceEncoding默认是false,所以web.xml中设置的这段代码是无效的。
处理方案
所以修改web.xml如下
<filter> <filter-name>encodFilter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
1 0
- 解决SpringMVC在IE页面返回乱码问题
- 解决springmvc返回json数据IE出现文件下载和json数据中文乱码问题
- 笔记:解决springMVC返回中文乱码问题
- 解决EasyUI Form submit和SpringMVC返回JSON在IE中变下载的问题
- 解决SpringMVC返回JSON在IE中变下载的问题
- 解决SpringMVC返回JSON在IE中变下载的问题
- SpringMVC返回JSON , 解决IE下下载问题
- 解决SpringMVC返回string乱码
- springMvc框架解决返回Json格式中文乱码问题
- springmvc解决ajax返回json数据乱码问题
- SpringMVC中解决@ResponseBody注解返回中文乱码问题
- 使用springmvc返回中文乱码问题的解决
- 解决springmvc乱码问题
- SpringMvc解决乱码问题
- springmvc解决乱码问题
- springMVC解决乱码问题
- springmvc + freemarker 解决表单提交、页面显示乱码 的问题
- 解决Struts2字符串属性返回页面乱码问题
- iOS 特殊字符转换
- 解决 linux mint chinamon 菜单里软件更换引用的问题
- Mac环境下Node.js版本升级
- SLAM笔记六——Unscented Kalman Filter
- java之二分查找算法实现
- 解决SpringMVC在IE页面返回乱码问题
- oracle 10046事件 调试级别
- 深入理解OkHttp源码(三)——网络操作
- 解决C#调用执行js报检索 COM 类工厂中 CLSID 为 {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} 组件失败
- 如何实现非填报表发布后源文件中生成ID
- 随便写写
- Python初识
- spring-spring mvc-mybatis 实现主从数据库配置
- HDU 5621 KK's Point(数学+规律题)