中文乱码问题(二)_0622

中文乱码

中文乱码不外乎三种情况,1.在前台传到后台的时候,就已经出现乱码2.web容器上的问题3.在保存到数据库中的时候出现乱码。下面我一一分析。

一。对于第一种情况,其实判断方法很简单,只要在后台Controller处加一断点,看一下,是否出现了乱码,如果果真出现乱码,首先要考虑一下,你穿过来的方式是get还是post,一般情况下,使用post就不会出现乱码,具体什么原因我也不是很清楚,可能post在传递时,会经过我在web.xml中设置的filter过滤器,如下图:

 1        <filter>
 2         <filter-name>encodingFilter</filter-name>
 3         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 4         <init-param>
 5             <param-name>encoding</param-name>
 6             <param-value>UTF-8</param-value>
 7         </init-param>
 8         <init-param>
 9             <param-name>forceEncoding</param-name>
10             <param-value>true</param-value>
11         </init-param>
12     </filter>
13     <!-- encoding filter for jsp page -->
14     <filter-mapping>
15         <filter-name>encodingFilter</filter-name>
16         <url-pattern>/*</url-pattern>
17     </filter-mapping>
18   
19   <servlet-mapping>
20       <servlet-name>springMVC</servlet-name>
21       <url-pattern>/</url-pattern>
22   </servlet-mapping>

请注意,我对所有的请求都进行拦截,进入SpringMVC来进行处理,然后,在将所有编码都转为UTF-8类型,这样就可以基本保证,我从前台传过来的值都为utf-8,当然为了保险起见,建议你在jsp的头上加入如下代码

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 

这样,我们在编码的过程中就是按照utf-8来做得。

二.第二点,我也只是有所耳闻,有的需要修改一下web容器的编码方式(其实问题出现的很少,可以忽略)

三.对于第三点才是让我们深恶痛绝的,尤其是有mysql的数据库,强烈建议,你在cmd模式下,进入到mysql,然后自己insert一条中文数据,查看一下,是否为乱码,如果为乱码,就代表mysql在配置上没有进行utf-8的转码,具体操作可以查看我前面文章所说的乱码问题。

基本就是到这里了,如果还有乱码问题发生,我还会继续跟进的,欢迎指正!

原文地址:https://www.cnblogs.com/weizizhe/p/3802706.html