MySQL支持emoji

方案1: 应用层支持

MySQL默认的数据库编码是utf8,对于emoji文字是不能直接存储的,要想存储emoji,有许多库支持对emoji的转换,例如将😊转存为:smile:,放在数据库里,在从数据库里取出来的时候,再转换为😊,这是应用层的方案。

方案2: 存储层支持

MySQL编码设置为utf8mb4,直接支持emoji,不需要应用层的改动。

注意事项:
MySQL索引的长度不能大于767字节, utf8 1个字存3byte, utf8mb4存4byte,相对应VARCHAR的字节数分别是255和191,所以要把索引字段的长度限制到191。

1
2
ALTER TABLE <table1> MODIFY COLUMN <col1_indexed> VARCHAR(191);
ALTER TABLE <table1> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

参考资料

  1. How to support full Unicode in MySQL databases
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×