出现MYSQL 插入错误error code [1366]; Incorrect string value:“\xF3\xB0\x80\x81\xE6\x8C..."的错误通常是由数据字符集编码造成的。可以通过如下代码:
show variables like '%char%';
查看当前数据库编码。
一般来说,我们把数据库编码设为utf-8就好了,但是如果遇到4字节unicode则会出现错误,所以为了兼容(比如一些emoj表情符号),通常需要将数据库字符集设置为utf8mb4。可以通过在控制台输入如下代码设置:
set character_set_database=utf8mb4;
set character_set_server =utf8mb4;
set character_set_client =utf8mb4;
set character_set_connection =utf8mb4;
set character_set_results =utf8mb4;
当然,在创建好表之前做了上面的操作一般都没啥问题了。但是我在写百度百科爬虫的时候遇到了一些问题,就是error code 1366。困扰了我很久,也按上面设置为utf8mb4,还是反复出现这个问题。找了一些资料,发现可以通过如下代码查看表中每个字段的字符编码:
show full columns from table_xxx;
这才发现所有字段的编码都是utf8而不是utf8mb4。原因找到了,通过如下代码改了程序就运行正常了:
alter table_xxx convert to character set utf8mb4;
问题看似简单,但定位确实要花点儿时间,写下了做备查记录!
网友评论