我在 Delphi 10.3 中使用的網路服務向我回傳一個由以下四個位元組組成的字串: F0 9F 99 82 。我期待一個略帶微笑的表情符號。該站點將此位元組序列顯示為該表情符號的 UTF-8 表示。所以我想我的字串中有一個 UTF-8 表示,但它是一個實際的 unicode 字串?我如何將我的字串轉換為實際的 unicode 表示,以顯示它,例如,在 TMemo 中?
uj5u.com熱心網友回復:
字符 ?? 具有Unicode代碼點U 1F642。顯示文本是通過編碼定義的:如何解釋一組位元組:
- 在UTF- 8的一個字符可以由8,16,24或32位(1至4
ByteS); 這個是$F0 $9F $99 $82。 - 在UTF- 16 中,一個字符可以由16或 32 位組成(2 或 4 個位元組 = 1 或 2
Words);這是$D83D $DE42(使用代理)。 - 在UTF- 32 中,一個字符總是由32位(4 個位元組 = 1
Cardinal或DWord)組成,并且總是等于代碼點,即$1F642。
在 Delphi 中,您可以使用:
TEncoding.UTF8.GetString()對于UTF-8- (或者
TEncoding.Unicode.GetString()如果你有 UTF-16LE - 而
TEncoding.BigEndianUnicode.GetString()如果你有UTF-16BE)。
請記住,?? 只是一個字符,就像文本中的每個字母、符號和空格一樣:它可以通過選擇(即Ctrl A)進行標記并復制到剪貼板(即Ctrl C)。不需要特別照顧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357952.html
上一篇:泛型覆瓦紋
