解决mysql统一utf-8编码问题
问题:在往mysql插入表单时,中文字符插入数据库以后是乱码(数据库显示的是一个问号)
springboot报错是:
Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xE7\x94\xB7' for column 'sex' at row 1
重点在于 ‘\xE7\x94\xB7’ for column ‘sex’ at row 1,mysql中的sex字段对应不进去。
解决:
step1.
在application.properties文件里边的数据源中添加如下的编码
step2.在mysql中使用命令
show variables like '%char%';
这里除了character_set_filesystem可以是binary,其他都要改成utf8。
用如下命令修改。
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
set character_set_system=utf8;
show variables like '%char%';
step3.我上边设置完了以后还是会报错,然后接着查看数据库字段编码格式:
// 查看数据库字段编码格式
SHOW FULL COLUMNS FROM USER
然后发现Collation这一列都不是utf8编码,需要更改成utf8的编码
alter table `tablename` convert to character set utf8;
然后改完了以后问题就解决了