问题描述
最近在学习Springboot+vue的项目时,遇到添加数据中文显示乱码
问题分析
- 首先怀疑mysql字符编码格式不是utf-8导致
- 在服务器端编码格式错误,导致存到mysql也是乱码
- mybatis配置不正确,导致乱码
问题排查
1 mysql字符编码格式
首先查看建表语句
show create table position
显示
position | CREATE TABLE `position` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL COMMENT '职位',
`createDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`enabled` tinyint(1) DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8
由上可以看出,这里的默认编码格式为utf8。所以暂时排除mysql字符编码的问题
2 服务端编码格式
这里,直接通过debug进入断点,并没有发现字符编码错误,所以直接排除
3 mybatis配置不正确
查看我们的配置文件:application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=root
spring.datasource.password=fangxiang
spring.datasource.url=jdbc:mysql://localhost:3306/vhr
server.port=8081
发现在url配置项中没有指定编码格式,于是将url配置项改成
spring.datasource.url=jdbc:mysql://localhost:3306/vhr?useUnicode=true&characterEncoding=utf8
然后,我们重启项目,到这里,问题应该解决了,没有解决也只能帮到这里了。
参考链接
https://www.jianshu.com/p/bd0311a33c16