【问题标题】:Unicode emojis not displaying in browser but stored in mysqlUnicode 表情符号不在浏览器中显示,但存储在 mysql 中
【发布时间】:2016-06-04 12:52:35
【问题描述】:

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

????

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

😴
💛

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

"had a great weekend with the family 💛"

代替:

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

任何建议我做错了什么?

编辑


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

htmlspecialcahrs()

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

&

&amp

导致表情符号不被识别为

&amp#128564

无效。我只需要删除

htmlspecialchars

重新插入字符串,它成功了!

感谢收看

【问题讨论】:

  • 你说数据库本身是utf8mb4编码的,但是连接、文件、PHP-和HTML-headers呢?
  • 我认为你第一次就做对了,但浏览器中并没有存储每一个 unicode 字符。要显示它们,您可能需要找到包含它们的字体并通过网站将其发送给用户
  • 我已经更改了字体,这没有任何区别。问题在于解释数据库的输出,所以我应该关注一个特定的区域吗?

标签: php mysql unicode emoji utf8mb4


【解决方案1】:

MySQL 不涉及 html 实体,例如 💛。其他东西正在生成它们。

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

如果您对实体卡住了,您可以通过html_entity_decode() 将它们转回字符。

最好全程使用 utf8mb4;即数据库中的UNHEX('F09F929B'),PHP中没有使用html*()等。

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 2018-12-02
    • 1970-01-01
    • 2018-12-14
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2016-02-07
    相关资源
    最近更新 更多