欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-09 22:16:15
...

使用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>

 

相关标签: 乱码