项目乱码处理

最近处理一个项目,从WebSphere迁移到Tomcat上。结果form表单submit提交的时候中文乱码(Ajax方式及ajaxForm方式也正常)

进行如下常规检查:
1、IDE编码设置检查
文件编码(JSP、Java、XML等);工作区编码、工程编码。均设置为UTF-8

2、Tomcat配置
server.xml中设置UTF-8 URIEncoding="UTF-8"
3、Spring Filter
顺序要放到xml最前面,否则可能受其他Filter影响。

    <!-- Apache Shiro -->
  <filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetFilterLifecycle</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
    ```

4、SpringMVC
设置请求信息转换器。其他的自行补充
```xml
<!-- 默认的注解映射的支持,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping -->
<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <constructor-arg value="UTF-8" />
</bean>




<div class="se-preview-section-delimiter"></div>

5、页面设置
“`



5、页面设置

```html
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

整体检查了一遍后,确定都这些设置都没有问题。
1、按照不同的项目同一个Web容器测试;
2、不同的Web容器同一个项目测试。
结果:
1、纯净的项目在任何Web容器都正常
2、该项目在WebSphere、Jetty下不需要改动均正常,只有Tomcat下才会乱码。
原因:
1、WebSphere运行时编码取自系统默认编码,Jetty默认编码是UTF-8,如果系统有设置取系统编码。Tomcat get 编码默认是 ISO-8859-1 ,可以通过 Connector 上 URIEncoding 设定编码,也可以强制 useBodyEncodingForURI =true 让 URI 和 body 编码一致。
2、问题出在该项目上。

原程序中删减配置文件,从web.xml开始 到SpringMVC、Spring Shiro、quartz等配置文件。逐步剔除并运行测试。最后发一个监听RequestListener的listener类继承了ServletRequestListener。造成该项目乱码。
直接再该类上设置’request.setCharacterEncoding(“UTF-8”);’解决此问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值