不同情况下的中文乱码解决方案

使用Tomcat8即可。

如果是tomcat7是由乱码问题,解决针对get和post乱码有不同的解决方案:

GET请求:

 

Connector的两个配置项

 

1.URIEncoding

 

这个参数用来针对url传参方式,也就是get请求的编码类型的设定

 

2.useBodyEncodingForURI

 

一个boolean类型的参数,用来决定url传参方式的编码是否与请求体编码一致,那么请求体编码又如何获取?请看下文”POST请求“

 

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI = “true”/>

 

注意:这两个参数只是针对url传参方式,也就是get请求,选其一进行配置即可,tomcat在处理get请求时,会关注这两个参数,并按所指定的编码去解码请求,未设置,默认以ISO8859-1。

POST请求

springMVC采用默认的编码方式(ISO-8859-1)对参数进行解析,而前端页面采用的编程方式为UTF-8,导中文乱码,但是spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码。在Web.xml加上Spring编码转换过滤器filter。

<filter>

        <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

</filter-mapping>

数据库解决乱码

当解决了前端传入后台的中文字符正常显示后,也可能会出现后台写入数据库中的数据出现中文字乱码的情况,即在数据库中文变为???的形式:

这是因为数据库的编码方式也需要进行修改:

<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">

    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>

    <property name="url" value="jdbc:mysql://127.0.0.1:3306/yanxj?useUnicode=true&amp;characterEncoding=UTF-8"></property>

    <property name="username" value="root"></property>

    <property name="password" value="root"></property>

    <property name="initialSize" value="1" />

    <property name="maxActive" value="5" />

</bean>

 

猜你喜欢

转载自blog.csdn.net/qq_40531768/article/details/89282784