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

Converting emoji from hex code to unicode

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

看来你的问题确实是"how do I display a character, knowing its code point?"

中的一个

这个问题原来是language-dependent!现代语言在这方面几乎没有问题。在 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 = ""

在Java脚本中,是一样的:

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

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

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

序列"\uD83D\uDE00" 也适用于所有三种语言。这是因为那些 "characters" 实际上是 Unicode 调用的 surrogates 并且当它们以某种方式组合在一起时它们代表单个字符。这一切如何工作的细节可以在网上的许多地方找到(寻找 UTF-16 编码)。算法在那里。简而言之,您采用代码点,减去 10000 十六进制,然后像这样展开该差异的 20 位:110110xxxxxxxxxx110111xxxxxxxxxx.

但与其担心这种翻译,如果您的语言支持得当,您应该直接使用代码点。您也许还可以 copy-paste 将表情符号字符输入一个好的文本编辑器(确保编码设置为 UTF-8)。如果你需要使用代理,最好的办法是查找一个 Unicode 图表,它显示了一个叫做 "UTF-16 encoding."

的东西

在DelphiXE中#F600相当于#55357#56832或D83D DE04微笑

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

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

JavaScript - 双向

let hex = "".codePointAt(0).toString(16)
let emo = String.fromCodePoint("0x"+hex);

console.log(hex, emo);