2017-09-21 94 views
8

的HTML字符实体𝕒HTML字符实体和Delphi之间的数值等价关系?

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

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

</body> 
</html> 

一些扩展字符符号可以从相同数量的值来创建的:

enter image description here

可以从数120146与此HTML代码创建无论是在HTML和Delphi 10.1.2。例如:

两个&#174;Chr(174)打造的 “注册商标” 符号字符®

两个&#163;Chr(163)创造£

“咚咚” 符号字符等等

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

那么如何才能在德尔福创建&aopf;字符符号从?以上的数值范围是HTML和Delphi之间的上述数值等价的工作或不工作?

回答

11

这是'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将它转换成德尔斐字符串:

TCharacter.ConvertFromUtf32($1D552) 

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

如果太多以上的Unicode术语是未知的,请阅读这些文章: