保存和渲染 emoji

在 MySQL 中保存原生 emoji 表情时,会提示非法字符无法保存

原因

  • 在 MySQL 中 utf8 字符集每个字符最多可以有 3 个字节码
  • 补充字符如 emoji 每个字符占用 4 个字节码
  • utf8mb4 可以用来保存扩展字符集
In [1]: emoji = '😄'

In [2]: emoji.encode()
Out[2]: b'\xf0\x9f\x98\x84'

方法

alter table emoji change column text text varchar(100) CHARACTER SET utf8mb4 NOT NULL;

在 Web 页面中显示 emoji

从 utf8mb4 字符集列中取出的 emoji 是 utf8/unicode 编码

  • 😄 \U0001f604 --> 😄

参考

Published: May 21 2015

blog comments powered by Disqus