springboot乱码问题排查思路解析
引言
我们在使用springboot项目开发过程中,会遇到中文保存到数据库后出现乱码的问题,这里以mysql为例介绍几个排查思路
1. mysql的数据库表的字符编码格式不是utf-8导致
可以通过以下的语句来查看数据库表的创建语句
show create table tableName;
如果不是UTF-8的,修改表的默认字符集和所有列的字符集语句
ALTER TABLE table_name CONVERT TO CHARACTER SET UTF-8
2. 服务器端编码格式错误,导致存到mysql也是乱码
这个可以通过debug的模式来断点执行,查看在服务端保存前收到的参数值是否是乱码,如果在服务端收到的就是乱码,那要检查下前端传入的字符是否有转成utf-8
3. mysql配置不正确,导致乱码
这个问题是最常遇到的,经常发现有同学忘记了这块的配置,就是在spring.datasource.url的配置中少了 &useUnicode=true&characterEncoding=utf8 的配置
spring.datasource.url = jdbc:mysql://localhost:3306/blog_system?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8
4. 读取配置文件的变量时,中文显示为乱码
如有一个test.properties的文件,设置了相应的变量值
tom.age = ${random.int[10,20]} tom.description = tom的年龄可能是这个数据: ${tom.age}
在程序中读取变量description时,会显示中文乱码
@Value("${tom.description}") private String description;
这时候就需要在配置引用配置文件时,添加encoding="UTF-8"
@PropertySource(value = "classpath:test.properties",encoding = "UTF-8")
以上就是springboot乱码问题排查思路解析的详细内容,更多关于springboot乱码排查的资料请关注脚本之家其它相关文章!
最新评论