HTML Character Entities和Delphi之间的数字等价?

时间:2017-09-21 19:06:19

标签: html delphi html-entities delphi-10.1-berlin

HTML字符实体𝕒

enter image description here

可以使用此HTML代码从数字120146创建:

<!DOCTYPE html>
<html>
<style>
body {
    font-size: 20px;
}
</style>
<body>

<p>I will display &#120146;</p>

</body>
</html>

其中一些扩展字符符号可以在HTML和Delphi 10.1.2中使用相同的数字值创建。例如:

&#174;Chr(174)都会创建“注册商标”符号字符®

&#163;Chr(163)都会创建“磅”符号字符£

不幸的是,上述数字 120146 并非如此,其中Delphi中的Chr(120146)创建了一个“有趣的中国符号”。

那么如何在Delphi中使用 120146 中的数字创建上述&aopf;字符符号?哪个是数字范围,HTML和Delphi之间的上述数字等价是否有效?

1 个答案:

答案 0 :(得分:11)

这是'MATHEMATICAL DOUBLE-STRUCK SMALL A' (U+1D552)。它在Basic Multilingual Plane之外,因此在UFT-16中使用代理对进行编码。这意味着需要两个UTF-16字符元素。

看看你的尝试:Chr(120146)。现在,120146 > high(Word)= 65535)告诉您代码无法成功。请记住,每个UTF-16字符元素的大小为16位。如果编译器警告这件事会很好。是吗?

上面的链接告诉您如何编码它。它是由这个代理对给出的:

  

0xD835 0xDD52

在Delphi中最容易写成:

#$D835#$DD52

如果您使用UTF-32代码作为数值开始,则可以使用System.Character单元中的TCharacter.ConvertFromUtf32将其转换为Delphi字符串:

TCharacter.ConvertFromUtf32($1D552)

显然,这个函数的参数可以是一个变量。

如果您不了解上述大部分Unicode术语,请阅读以下文章: