mysql可以用表情符号_让MySQL支持emoji表情符号存储

MySQL的文本(varchar,text),对emoji表情符号不是很好的支持,在5.5之前的版本,varchar和text都是不支持存储emoji表情符号的(即使是utf8)的编码模式。原因在于mysql的utf8是规定了每一个utf8字符按照3个字节来存储,而一个emoji(最初来自苹果系统,现在流行于各种移动操作系统)却需要4个字节来存储。这就导致了如果强制将emoji存储到varchar,text等字段上的时候,mysql会抛出异常,认为emoji是个不正确的文本。

ERROR 1366 (HY000): Incorrect string value: ‘\xF0\x9F\x91\xBD\xF0\x9F…’ for column ‘name’ at row 31

其原因是utf8是不定长的,根据左侧位来决定占用了几个字节。emoji表情是4个字节,而MySQL的utf8编码最多支持3个字节,所以插入会出错。

为了解决这个问题,MySQL 5.5开始支持utf8mb4,utf8mb4可支持4个字节utf编码,从而支持更大的字符集,并且兼容utf8。简单来说,utf8mb4是utf8的超集。

要让MySQL开启utf8mb4支持,需要一些额外的设置。

检查MySQL Server版本

utf8mb4 支持需要MySQL Server v5.5.3+

设置

设置表的CHARSET

创建表的时候指定CHARSET为utf8mb4

CREATE TABLE IF NOT EXISTS table_name (

...

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general

你可能感兴趣的:(mysql可以用表情符号)