如何在HTML中显示表情符号

23

我将“品尝美食表情符号”的表情保存到数据库中,并在php中使用json_encode读取它,显示出“uD83D\uDE0B”。但通常我们会用一个<img />标签来替换它。

然而,通常我只找到这种格式'\uE056'而不是"uD83D\uDE0B",以便用图片E056.png来替换它。

我不知道如何根据"uD83D\uDE0B"获取图片。有人知道吗?

"uD83D\uDE0B"和"\uE056"之间的关系是什么,它们都代表"品尝美食"的表情符号吗?

3个回答

9
Unicode字符U+1F60B FACE SAVOURING DELICIOUS FOOD是所谓的Plane 1字符,这意味着它的UTF-16编码形式由两个16位代码单元组成,即0xD83D 0xDE0B。通常,Plane 1字符会引起很大问题,因为许多程序没有准备好处理它们,而且很少有字体包含它们。
根据http://www.fileformat.info/info/unicode/char/1f60b/fontsupport.htm,这个特定字符只存在于DejaVu字体和Symbola字体中,但我正在使用的DejaVu版本并不包含它。
除了处理编码问题(这并不难,但需要额外的信息),您可以在HTML中使用字符引用&#x1f608;。但这并不能解决字体问题。我不知道iPhone字体情况如何,但一般来说,在Web浏览中,计算机具有渲染该字符所需的任何字体的可能性可能小于1%。因此,您可能需要使用可下载字体。使用图像显然更简单,而且通常更可靠。

U+E056是私有使用代码点,这意味着任何人都可以与自己或他的兄弟就其含义达成协议,而无需征求其他人的意见。字体设计师可以为其分配任何字形。


1
这个答案在2015年似乎不再正确了?Safari在OSX和iOS以及Android上,以及Firefox都支持所有这些字符,IE也是如此。因此,能够呈现这些字符的可能性可能在90%左右,除了第三世界国家或类似地方的旧手机之外。但是那些手机无法显示中文或日本等语言,而且可能不是您的市场。 - gman
@gman,字体问题仍然存在。这不是操作系统或浏览器问题,除非操作系统或浏览器随附额外的字体。现在的概率已经超过1%,但肯定远低于90%。 - Jukka K. Korpela
5
大约85%的设备支持此功能。每个运行iOS系统的设备,每台Mac电脑,每台运行IE10、Chrome或Firefox浏览器的Windows电脑,以及每个运行Android 4.1或更高版本的设备。而根据谷歌的数据,目前超过80%的Android设备都支持此功能。 - gman

3

重要提示:截至本文发布时,唯一不自动支持表情符号的浏览器是Chrome。

对于Chrome用户: 根据您使用的服务器端语言,您应该能够找到一个将表情符号转换为可识别字符的库。最近我需要用php解决这个问题,使用了以下库:

https://github.com/iamcal/php-emoji

创建者基本上创建了一个精灵,并根据表情符号的Unicode调整了css。虽然它不太好看,但幸运的是他/她已经为您做好了所有繁重的工作。如果您使用的是其他语言,您应该能够找到类似的东西。


0

我该如何将这些小方块放入php文件中?

和其他Unicode字符一样。只需粘贴它们,并确保您将PHP文件保存为UTF-8并将PHP页面作为UTF-8提供。

当我将其放入php文件中时,它变成了问号和其他字符。

那么您就有一个编码问题。首先使用您可以正确查看的Unicode字符(例如ąαд™日本)解决它,然后再担心表情符号。

您的PHP文件应保存为UTF-8;它生成的页面应以Content-Type:text / html; charset:UTF-8(或类似的元标记)提供;MySQL数据库应使用UTF-8排序规则存储数据,并且PHP应使用UTF-8与MySQL通信。

但是,即使像这样正确处理所有内容,PC仍然无法显示表情符号。这是因为:

它们没有包含这些字符形状的字体,以及

表情符号仍然完全不标准化。您发布的这些字符位于Unicode专用区域,这意味着它们根本没有任何官方含义。

日本的每个网络都使用不同的字符代码来映射PUA中的不同区域的表情符号。因此,即使在另一部手机上,除非您花费大量时间手动转换不同网络的表情符号代码,否则它可能不会显示正确的字符。我猜你上面发布的是来自SoftBank(iPhone?)。

谷歌和苹果正在进行一个提案,汇总不同网络的表情符号,并为它们在Unicode中提供适当的标准化位置。在那之前,让表情符号在各个网络上显示一致是一项令人不愉快的任务。请参阅字符概述以了解需要进行多少转换。

天啊,我讨厌表情符号。所有这些痛苦只为了一堆无用的俏皮话。


请注意:MCKapur提到的Unicode标准现已实施。大多数常见的表情符号现在在大多数PC和移动平台上得到支持,尽管我在Ubuntu中看到了一些表情符号的问题。 - drevicko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接