将表情符号从十六进制代码转换为unicode

时间:2017-02-06 06:13:41

标签: unicode emoji

我想在我的iOS和Android应用中使用emojis。我检查了表情符号列表here,并列出了表情符号的十六进制代码。当我尝试直接使用U+1F600等十六进制代码时,我在应用程序中看不到表情符号。我找到了另一种表示表情符号\uD83D\uDE00的表情符号的方法。使用此表示法时,可以在应用程序中看到表情符号而无需任何额外代码。我认为这是表情符号的Unicode字符串。我认为这更像是一个特定于表情符号的一般性问题。如何将表情符号十六进制代码转换为Unicode字符串,如上所示。我没有找到任何列出emojis的Unicode的列表。

2 个答案:

答案 0 :(得分:3)

看来你的问题实际上是"我如何知道它的代码点?"

这个问题结果与语言有关!现代语言对此没有什么困难。在Swift中,我们这样做:

$ swift
Welcome to Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1). Type :help for assistance.
  1> "\u{1f600}"
$R0: String = ""

在JavaScript中,它是相同的:

$ node
> "\u{1f600}"
''

在Java中,你需要做更多的工作。如果您想直接使用代码点,可以说:

new StringBuilder().appendCodePoint(0x1f600).toString();

序列"\uD83D\uDE00"也适用于所有三种语言。这是因为那些"字符"实际上是Unicode所谓的代理,当它们以某种方式组合在一起时,它们代表单个字符。有关如何工作的详细信息可以在网上找到很多地方(寻找UTF-16编码)。算法就在那里。简而言之,你取代码点,减去10000十六进制,并将这个差异的20位分散如下:110110xxxxxxxxxx110111xxxxxxxxxx

但是,如果您的语言支持的话,您应该直接使用代码点,而不是担心这种翻译。您也可以将表情符号复制粘贴到一个好的文本编辑器中(确保编码设置为UTF-8)。如果您需要使用代理,最好的方法是查找一个Unicode图表,显示一个名为" UTF-16编码的内容。"

答案 1 :(得分:0)

在Delphi XE中,#$1F600相当于#55357#56832或D83D DE04微笑。

在程序中,我通过以下方式使用它:

const smilepage : array [1..3] of WideString =(#$1F600,#$1F60A,#$2764);