23

我把脸“品尝美味的食物表情符号”保存到数据库中,并在显示“uD83D\uDE0B”的php json_encode中读取。但通常我们使用一个<img />标签来替换它。但是,通常我只是发现这种格式 '\uE056' 而不是 "uD83D\uDE0B",用 pic E056.png 替换。

我不知道如何让图片符合“uD83D\uDE0B”。有人知道吗?

'uD83D\uDE0B' 和 '\uE056' 是什么关系,都代表“品尝美食”的表情符号?

4

3 回答 3

9

Unicode字符U+1F60B FACE SAVORING DELICIOUS FOOD是所谓的Plane 1字符,也就是说它的UTF-16编码形式由两个16位的编码单元组成,即0xD83D 0xDE0B。通常,Plane 1 字符会引起相当大的问题,因为许多程序没有准备好处理它们,而且很少有字体包含它们。

根据http://www.fileformat.info/info/unicode/char/1f60b/fontsupport.htm这个特殊字符只存在于 DejaVu 字体和 Symbola 中,但我使用的 DejaVu 版本不包含它。

&#x1f608;您可以使用HTML 中的字符引用,而不是处理编码问题(这并不难,但需要额外的信息) 。但这并不能解决字体问题。我不知道 iPhone 字体,但一般来说,在网页浏览中,计算机拥有能够呈现字符的任何字体的几率可能低于 1%。因此,您可能需要使用可下载的字体。使用图像显然要简单得多,而且更可靠。

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

于 2012-05-14T09:23:50.577 回答
3

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

FOR CHROME:根据您使用的服务器端语言,您应该能够找到一个为您转换表情符号的库。我最近需要用 php 解决这个问题并使用了这个库:

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

创建者本质上创建了一个精灵并根据表情符号的 unicode 调整 css。这并不漂亮,但幸运的是他/她为你做了所有的繁重工作。如果您使用不同的语言,您应该能够找到类似的东西。

于 2014-09-23T22:41:04.293 回答
0

如何将这些小盒子放入 php 文件中?

与任何其他 Unicode 字符相同。只需粘贴它们并确保您保存 PHP 文件并将 PHP 页面提供为 UTF-8。

当我把它放到一个php文件中时,它变成了问号,什么不是

然后你有一个编码问题。在担心表情符号之前,首先使用您实际上可以正确看到的 Unicode 字符进行计算,例如 ąαд™日本。

您的 PHP 文件应保存为 UTF-8;它产生的页面应该被用作Content-Type: text/html;charset:UTF-8(或具有类似的元标记);MySQL 数据库应该使用 UTF-8 排序规则来存储数据,PHP 应该使用 UTF-8 与 MySQL 对话。

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

他们没有包含这些字符形状的字体,并且

表情符号仍然完全不标准化。您发布的那些字符在 Unicode Private Use Area 中,这意味着它们根本没有任何官方含义。

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

由谷歌和苹果牵头的一项正在进行的提议是整理不同网络的表情符号,并在 Unicode 中给它们一个适当的标准化位置。在那之前,让表情符号在网络上持续显示是一种不快乐的练习。请参阅标准化工作中的角色概述,了解您需要进行多少转换。

上帝,我讨厌表情符号。对于这么多无用的twee垃圾,所有的痛苦。

于 2012-05-14T09:01:19.183 回答