HTML 字符实体𝕒
:
可以使用以下 HTML 代码从数字 120146 创建:
<!DOCTYPE html>
<html>
<style>
body {
font-size: 20px;
}
</style>
<body>
<p>I will display 𝕒</p>
</body>
</html>
这些扩展字符符号中的一些可以在 HTML 和 Delphi 10.1.2 中从相同的数字值创建。例如:
®
和Chr(174)
均创建“注册商标”符号字符®
£
和 Chr(163)
都创建了“磅”符号字符 £
等等
不幸的是,上面的数字 120146 不是这种情况,其中 Chr(120146)
在 Delphi 中创建了一个“有趣的中文符号”。
那么如何在Delphi中从数字120146创建上面的𝕒
字符符号呢?上述 HTML 和 Delphi 之间的数值等价在哪个数值范围内有效或无效?
最佳答案
这是 'MATHEMATICAL DOUBLE-STRUCK SMALL A' (U+1D552) .它在基本多语言平面之外,因此在 UFT-16 中使用代理对进行编码。这意味着需要两个 UTF-16 字符元素。
看看你的尝试:Chr(120146)
。现在,120146 > high(Word)
(= 65535
) 告诉您您的代码无法成功。请记住,每个 UTF-16 字符元素的大小都是 16 位。如果编译器对此发出警告就好了。是吗?
上面的链接告诉您如何对其进行编码。它由这个代理对给出:
0xD835 0xDD52
在 Delphi 中最容易写成:
#$D835#$DD52
如果您以 UTF-32 代码作为数值开始,那么您可以使用 TCharacter.ConvertFromUtf32
将其转换为 Delphi 字符串来自 System.Character
单元:
TCharacter.ConvertFromUtf32($1D552)
显然这个函数的参数可以是一个变量。
如果上面的大部分 Unicode 术语您都不了解,请阅读以下文章:
关于html - HTML 字符实体和 Delphi 之间的数字等价性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46351459/