springmvc数据库中文乱码问题解决

    xiaoxiao2024-10-24  82

    使用springmvc将表单提交的数据存至数据库然后显示,当提交的数据有中文时,可能会出现数据库中的中文乱码现象 整个数据流转流程,如下图所示: 表单数据提交 —> controller数据接收 —>service调用数据库 —>数据库存储 其中主要有三个流转过程: 1.页面表单到controller,2.连接数据库,3.数据库识别sql进行数据存储 这3方面都有可能导致编码错乱 大多数情况下,我们都设定成utf-8的形式来处理编码

    情况一:页面表单到controller时拿到的数据就是乱码的

    这时候就需要对表单数据进行编码处理,最常见的就是添加编码过滤器CharacterEncodingFilter 在web.xml中添加如下代码:

    <filter> <filter-name>characterEncodingFileter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFileter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

    这样服务器就会对所有的http请求都进行编码过滤,保证进入到controller中的字符都是utf-8形式的 (当然,表单页面本身最好也是指定utf-8编码的,如jsp的话就 pageEncoding=‘utf-8’) 如果还是最终显示乱码,就继续往下跟

    情况二:controller中正常,到数据库中存储后显示就乱码

    这种最常见,处理方式两个方面:1.数据库的默认编码配置,2.服务器对数据库的连接指定编码

    1.检查修改数据库编码配置

    以MySQL为例,修改编码配置网上资料很多,我简单说一下:

    查看数据库编码 show variables like ‘collation_%’;更改数据默认编码配置:在mysql安装目录中修改my.ini文件(未处理修改过就叫做my-default.ini文件),[client]字段(没有就新建)下增加default-character-set=utf8,[mysqld]字段下增加character_set_server=utf8,最终显示类似如下: 再次查看数据库编码,应该就是默认utf-8了

    2.设定数据库连接指定编码

    这种情况最容易被忽略,我们在代码中连接数据库时 最好指定编码&characterEncoding=UTF-8,因为可能数据库连接时使用了默认的ISO编码格式,需要我们显式地指定编码格式。如下: 一般指定&characterEncoding=UTF-8就够了,不用加上useUnicode=true —————————————————— 以上3步设定一般已经可以保证解决中文编码问题了,尤其是 设定数据库连接指定编码,是最有效的

    以上是我入坑后的自己的处理办法,欢迎批评指正

    最新回复(0)