中文乱码
中文乱码不外乎三种情况,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的转码,具体操作可以查看我前面文章所说的乱码问题。
基本就是到这里了,如果还有乱码问题发生,我还会继续跟进的,欢迎指正!