html - HTML 字符实体和 Delphi 之间的数字等价性?

标签 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 中从相同的数字值创建。例如:

®Chr(174)均创建“注册商标”符号字符®

£Chr(163) 都创建了“磅”符号字符 £

等等

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

那么如何在Delphi中从数字120146创建上面的𝕒字符符号呢?上述 HTML 和 Delphi 之间的数值等价在哪个数值范围内有效或无效?

最佳答案

这是 '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 将其转换为 Delphi 字符串来自 System.Character 单元:

TCharacter.ConvertFromUtf32($1D552)

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

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

关于html - HTML 字符实体和 Delphi 之间的数字等价性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46351459/

相关文章:

javascript - 将数字包裹在 span 和 .not() 中

php - 导入表时 MYSQL 拒绝 root 访问

delphi - 使控件透明

javascript - 使用 javascript 处理跨浏览器功能

javascript - 将绝对定位元素限制为容器宽度

delphi - 将 TArray<X> 类型转换为 X 数组是否安全?

delphi - dbx元数据中有“AlterTable”命令吗?

PHP htmlentities 只允许 <b> 和 <i>

sql - HTML 实体应该如何存储在 SQL Server 上?

html - 我们是否仍然需要使用 £ 或 £ 来代替 html 中的英镑 £ 符号?