HTML 字符实体和 Delphi 之间的数值等价?
Numeric equivalence between HTML Character Entities and Delphi?
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)
都创建了 "registered trademark" 符号字符 ®
£
和 Chr(163)
都创建了 "pound" 符号字符 £
等等
不幸的是,上面的数字 120146 不是这种情况,其中 Delphi 中的 Chr(120146)
创建了一个 "funny Chinese symbol".
那么如何从Delphi中的数字120146创建上面的𝕒
字符符号呢? HTML 和 Delphi 之间的上述数值等价在哪个数值范围内有效或无效?
这是'MATHEMATICAL DOUBLE-STRUCK SMALL A' (U+1D552)。它在基本多语言平面之外,因此在 UFT-16 中使用代理对进行编码。这意味着需要两个 UTF-16 字符元素。
看看你的尝试:Chr(120146)
。现在,120146 > high(Word)
(= 65535
) 告诉您您的代码无法成功。请记住,每个 UTF-16 字符元素的大小都是 16 位。如果编译器对此发出警告就好了。是吗?
上面的link告诉你如何编码。它由这个代理对给出:
0xD835 0xDD52
在 Delphi 中最容易写成:
#$D835#$DD52
如果您以 UTF-32 代码作为数值开始,那么您可以使用 System.Character
单元中的 TCharacter.ConvertFromUtf32
将其转换为 Delphi 字符串:
TCharacter.ConvertFromUtf32(D552)
显然这个函数的参数可以是一个变量。
如果以上 Unicode 术语中的大部分您都不了解,请阅读这些文章:
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)
都创建了 "registered trademark" 符号字符 ®
£
和 Chr(163)
都创建了 "pound" 符号字符 £
等等
不幸的是,上面的数字 120146 不是这种情况,其中 Delphi 中的 Chr(120146)
创建了一个 "funny Chinese symbol".
那么如何从Delphi中的数字120146创建上面的𝕒
字符符号呢? HTML 和 Delphi 之间的上述数值等价在哪个数值范围内有效或无效?
这是'MATHEMATICAL DOUBLE-STRUCK SMALL A' (U+1D552)。它在基本多语言平面之外,因此在 UFT-16 中使用代理对进行编码。这意味着需要两个 UTF-16 字符元素。
看看你的尝试:Chr(120146)
。现在,120146 > high(Word)
(= 65535
) 告诉您您的代码无法成功。请记住,每个 UTF-16 字符元素的大小都是 16 位。如果编译器对此发出警告就好了。是吗?
上面的link告诉你如何编码。它由这个代理对给出:
0xD835 0xDD52
在 Delphi 中最容易写成:
#$D835#$DD52
如果您以 UTF-32 代码作为数值开始,那么您可以使用 System.Character
单元中的 TCharacter.ConvertFromUtf32
将其转换为 Delphi 字符串:
TCharacter.ConvertFromUtf32(D552)
显然这个函数的参数可以是一个变量。
如果以上 Unicode 术语中的大部分您都不了解,请阅读这些文章: