解决mysql特殊字符或者Emoji表情插入报错问题
原因:
MySQL的utf8编码最多3个字节,Emoji表情或者某些特殊字符是4个字节,所以数据插入不了,需要修改编码。
在MySQL 的"utf8"实际上不是真正的 UTF-8。
"utf8"只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。
MySQL 一直没有修复这个 bug,他们在 2010 年发布了一个叫作"utf8mb4"的字符集,绕过了这个问题。
解决办法:
1. 查看mysql现在的字符集
show variables like 'char%';
2. 修改mysql数据库服务端字符集
在linux服务器上找my.cnf, 一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
3. 然后重启mysql服务
service mysql restart
4. 修改数据库中表字符集和字段字符集
- 修改数据库表字符集
alter table 表名 convert to character set utf8mb4 collate utf8mb4_bin;
- 修改数据库字段字符集
alter table 表名 modify column 字段 字段类型 character set utf8mb4 collate utf8mb4_bin;