解决Spring整合Mybatis中数据库中文乱码的问题

本文详细介绍了在使用SSM框架的项目中遇到的中文乱码问题及其解决方案。从springMVC的CharacterEncodingFilter配置,到JDBC连接字符串中的characterEncoding参数调整,再到数据库的编码设置,全面覆盖了从前端到后端可能引发乱码的各个环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做一个SSM的项目的时候,数据库用的是MYSQL, 数据库中存储的中文字符取出来的时候和存进去的中文字符变成了问号或者乱码字符。

乱码问题出现的情况有很多种,针对web开发这一流程来说,可以根据数据的流向来定位乱码出现的位置。前台发起一个请求,数据通过http协议到后被接收,这里数据会进行一次编码,在ssm环境下,是springMVC来拦截请求进行处理,所以在springMVC中能配置数据的编码格式,springMVC提供的是一个filter,在web.xml中配置

<!-- 编码过滤器 -->
    <filter>
        <filter-name>springfilter</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>springfilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

如果经springMVC拦截的中文参数没有出现乱码,则说明这里的编码没有出现问题,然后进一步去分析数据的流向。ssm的环境下是mybatis框架与数据库进行交互,mybatis本身对数据不会进行编码,但是在与数据库交互的时候会有编码的问题,比如在jdbc配置的时候,数据库连接这里有一个编码的参数需要配置。

url=jdbc:mysql://localhost:3306/user?useUnicode=true&amp;characterEncoding=UTF-8
在所连接的数据库后边添加useUnicode=true&amp;characterEncoding=UTF-8

如果以上的配置都确定没有问题和,那么很大可能性就是数据库乱码了,在新建数据库的时候需要选择一个数据的编码方式。

或者在spring的配置文件applicationContext.xml中的配置数据源中的数据库url地址时加上?characterEncoding=utf8后解决了这个问题。

                       ?characterEncoding=utf8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值