1.问题描述
> 1366 - Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'name' at row 1
在更新mysql的时候中文报错这个,一看就是因为字符编码导致的,下面是排查过程,简单记录下,
1.1检查库的字符编码
show variables like 'character_set_database' //检查库编码
ALTER database test character set utf8; //修改库编码
1.2检查表字符编码
SHOW CREATE TABLE tbl_name;
alter table test_user character set utf8;
1.3检查字段编码集
show full fields from test_user
ALTER TABLE test_user CHANGE name name VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE 表名 CHANGE 字段名 字段名 VARCHAR(16) CHARACTER SET utf8 COLLATE utf8_general_ci;
1.4如果还是中文乱码,检查代码里面url是否配置了字符编码格式
以spring boot为例
在application.properties中
spring.datasource.url =jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
是否咋最后有加?useUnicode=true&characterEncoding=UTF-8这段配置
1.5.如果还是乱码,检查前端传入参数是否已经乱码,这个可以通过打印出来的日志就可以看到,具体就不再阐述
网友评论