Unicode表情符号不在浏览器中显示但存储在mysql中

时间:2016-02-22 21:58:30

标签: php mysql unicode emoji utf8mb4

我正在尝试在Web浏览器中显示存储在我的mysql数据库中的Emojis并遇到问题。最初,表情符号被翻译成

????

做了一些研究,并将所需表格的字符集更改为utf8mb4。我现在能够将unicodes存储在数据库中,例如。

😴
💛

然而,当我通过php检索这些存储的字符串时,从数据库中我只看到代码周围的文本和代码本身而不是表情符号。 例如

"had a great weekend with the family 💛"

而不是:

“和家人度过了愉快的周末”

任何建议我做错了什么?

修改

解决了我的问题。我正在使用

htmlspecialcahrs()

关于我想要存储的字符串的输入。这是转换

&

&amp

导致表情符号不被识别为

&amp#128564

无效。我只需要删除

htmlspecialchars

重新插入字符串,它有效!

感谢您寻找

1 个答案:

答案 0 :(得分:0)

MySQL不会触及💛等html实体。还有别的东西正在产生它们。

如果你在php中使用json,请检查第二个arg以避免htmlentities。

如果你坚持使用实体,可以通过html_entity_decode()将它们变回字符。

最好整个都有utf8mb4;这是数据库中的UNHEX('F09F929B'),在PHP等中没有使用html*()