如何将 4 字节字符串转换为 unicode 表情符号?
How can I convert a 4-byte string into an unicode emoji?
我在我的 Delphi 10.3 returns 中使用的一个网络服务,一个由这四个字节组成的字符串: F0 9F 99 82 。我期待一个微微微笑的表情符号。 This 站点将此字节序列显示为该表情符号的 UTF-8 表示形式。所以我想我的字符串中有一个 UTF-8 表示,但它是一个实际的 unicode 字符串?我如何将我的字符串转换为实际的 unicode 表示形式,例如,在 TMemo 中显示它?
该角色具有 Unicode code point U+1F642。显示文本是通过编码定义的:如何解释一组字节:
- in UTF-8一个字符可以由8、16、24或32位组成(1到4个
Byte
);这个是 $F0 F
.
- 在 UTF-16 one character can consist of 16 or 32 bits (2 or 4 bytes = 1 or 2
Word
s); this one is $D83D $DE42
(using surrogates).
- 在UTF-32中一个字符总是由32位组成(4字节=1
Cardinal
或DWord
)并且总是等于代码点,即F642
.
在Delphi中,您可以使用:
TEncoding.UTF8.GetString()
对于 UTF-8
- (或
TEncoding.Unicode.GetString()
如果你有 UTF-16LE
- 和
TEncoding.BigEndianUnicode.GetString()
如果你有 UTF-16BE)。
请记住,这只是一个字符,就像文本中的每个字母、符号和空格一样:它可以通过选择来标记(即 Ctrl+A ) 并复制到剪贴板(即 Ctrl+C)。不需要特别照顾。
我在我的 Delphi 10.3 returns 中使用的一个网络服务,一个由这四个字节组成的字符串: F0 9F 99 82 。我期待一个微微微笑的表情符号。 This 站点将此字节序列显示为该表情符号的 UTF-8 表示形式。所以我想我的字符串中有一个 UTF-8 表示,但它是一个实际的 unicode 字符串?我如何将我的字符串转换为实际的 unicode 表示形式,例如,在 TMemo 中显示它?
该角色具有 Unicode code point U+1F642。显示文本是通过编码定义的:如何解释一组字节:
- in UTF-8一个字符可以由8、16、24或32位组成(1到4个
Byte
);这个是$F0 F
. - 在 UTF-16 one character can consist of 16 or 32 bits (2 or 4 bytes = 1 or 2
Word
s); this one is$D83D $DE42
(using surrogates). - 在UTF-32中一个字符总是由32位组成(4字节=1
Cardinal
或DWord
)并且总是等于代码点,即F642
.
在Delphi中,您可以使用:
TEncoding.UTF8.GetString()
对于 UTF-8- (或
TEncoding.Unicode.GetString()
如果你有 UTF-16LE - 和
TEncoding.BigEndianUnicode.GetString()
如果你有 UTF-16BE)。
请记住,这只是一个字符,就像文本中的每个字母、符号和空格一样:它可以通过选择来标记(即 Ctrl+A ) 并复制到剪贴板(即 Ctrl+C)。不需要特别照顾。