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

use*_*348 8 html delphi html-entities delphi-10.1-berlin

HTML字符实体𝕒:

在此输入图像描述

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

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

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

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

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

双方&#174;Chr(174)创建了"注册商标"符号字符®

双方&#163;Chr(163)创建了"咚咚"标记符号£

等等.

不幸的是,这不符合上述数量的情况下120146,其中Chr(120146)在Delphi中创建一个"有趣的中国符号".

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

Dav*_*nan 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
Run Code Online (Sandbox Code Playgroud)

如果你开始用UTF-32代码为数值,那么你可以将其转换为使用Delphi的字符串TCharacter.ConvertFromUtf32System.Character单元:

TCharacter.ConvertFromUtf32($1D552)
Run Code Online (Sandbox Code Playgroud)

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

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