MySQL报错Incorrect string value: ‘\xF0\x9F\x90\xA0 \xD0…‘ for column ‘XXX‘ at row 1“
这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。
解决方案
1.找到你的mysql安装目录
windows
系统就找到my.ini
linux
系统就找到my.cf
打开然后在里面加入或者修改,把字符集改成utf8mb4
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
2.如果你的数据库是之前建好的要修改编码
更改数据库编码:(将your_database_name 替换成你的库名)
ALTER DATABASE your_database_name
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
更新表字符集和排序规则: (将your_table_name 替换成你的表名)
ALTER TABLE your_table_name
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
更改列字符集和排序规则:
(将your_table_name 替换成你的表名)
(将your_column_name 替换成你的字段名)
ALTER TABLE your_table_name
CHANGE your_column_name your_column_name
VARCHAR(255) /* 换成自己字段的数据类型 */
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
3.重启mysql服务即可
如果使用navicat,建议换个数据库工具再试试