将表情符号从十六进制代码转换为 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);
我想在我的 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);