【发布时间】:2015-10-01 17:45:23
【问题描述】:
我正在尝试使用其 unicode 值(????)显示表情符号。但是我将转义字符串作为\u00f0\u0178\u02dc\u20ac,解码为😀。
我在我的项目中使用 Mysql 服务器和 PHP 5.4。在 mysql 中,它存储为😀。有什么办法可以避免这种情况并从 PHP 服务器返回实际的 unicode
我试过了,
iconv('ASCII//TRANSLIT', 'UTF-8', '😀');、mb_convert_encoding($var, "US-ASCII", "UTF-8") 和 utf8_encode()。不工作。
谢谢
【问题讨论】:
-
你需要在 MySQL 中使用
utf8mb4。utf8仅支持每个字符最多 3 个字节。 -
Here 可以看到确实是4个字节。
-
@Vatev :Mysql 通过将其拆分为 4 个单独的字符来绕过存储问题。我正在尝试对其进行重组。由于我的数据库非常庞大,如果没有适当的验证,我无法直接更改数据库编码。
-
@Vatev Mysql docs 表示表情符号在数据库中没有第4个字节 对于补充字符,utf8根本无法存储字符,而utf8mb4需要四个字节存储它。由于 utf8 根本无法存储字符,因此在 utf8 列中没有任何补充字符,从旧版本的 MySQL 升级 utf8 数据时无需担心转换字符或丢失数据。