[英]Numeric equivalence between HTML Character Entities and Delphi?
HTML Character Entity 𝕒
:
可以使用此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)
创造了一个“有趣的中国符号”。
那么如何创建上面的𝕒
德尔福的120146字符符号? 哪个是数值范围,HTML和Delphi之间的上述数字等价是否有效?
这是'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术语,请阅读以下文章:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.