前记:项目用SSM框架,一直没出现这个问题,今天新建一个SSM项目时突然出现中文乱码的问题,挺郁闷的,搞了几个小时终于知道哪里出错了。😢
问题排查
1、检测数据库连接参数是否有添加characterEncoding=utf-8的参数。
2、服务器的配置文件server.xml是否有添加utf-8的参数。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
3、SSM项目中的springmvc配置文件是否有添加相对应的配置,一般是这里出问题。
<!-- 由於Spring處理返回值為String型別的結果時使用了StringHttpMessageConverter, 所以我們需要配置他的編碼 -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
4、检测web.xml是否有添加过滤器
<!-- 编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5、以上的解决方法还是无效的话在@RequestMapping注解加编码设置
@RequestMapping(value="/list", produces = "text/html;charset=UTF-8")