可能由一下几种情况导致
1.项目字符编码
2.前端传参的字符编码
3.数据库字符编码(表、字段、数据库配置)
设置后端jdbc连接编码 characterEncoding=UTF-8
jdbc:mysql://172.16.2.134:3306/starFish?serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf-8
若后端为utf-8 ,数据库为jbk,连接需要加
useUnicode=true&characterEncoding=UTF-8
作用如下:
1. 存数据时:
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
controller接收前端请求中文参数并未乱码,插入数据库后乱码。考虑是数据库的编码格式存在问题
查看数据库字符编码
show variables like 'character%';
1.修改mysql的配置文件
vim /etc/my.cnf
2.增加如下配置
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
3.重启数据库
systemctl restart mysqld