`

MySQL插入emoji手机表情报错解决方案

阅读更多

报错原因:

ps:为什么没有内容呢,由于iteye插入emoji报错,导致保存被截断了,2018-04-11再次编译

 

插入手机表情报错,类似(手机可观看的emoji表情,这里报错就不插入了)

 

报错内容:

 

Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: 
Incorrect string value: '\xF0\x9F\x90\xB4' 
for column 'content' at row 10
 

 

原因:

资料显示原因是,MYSQL 5.5 之前, UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区,而emoji图标恰好是4个字节的编码进行存储。从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,所以能支持更多的字符集。所以要解决问题,必需把数据库表字符编码全部改成utf8mb4。

 

解决方案:

1,更新my.cnf 编码为utf8mb4

$ sudo gedit /etc/mysql/my.cnf

 

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-client-handshake = FALSE
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

 

2,重启MySQL服务器

service mysqld stop
service mysqld start
service mysqld restart

 

3,查看系统文件编码格式

mysql > SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

 

  • 大小: 16.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics