gpt4 book ai didi

perl - 如何在 Perl 中枚举所有 Unicode 规范等效序列?

转载 作者:行者123 更新时间:2023-12-04 04:35:58 24 4
gpt4 key购买 nike

是否存在一个标准的 Perl 模块或函数,给定一个 Unicode Combining Character Sequence (或者,更一般地说,一个任意的 Unicode 文本字符串),将生成所有规范等效字符串的列表?

例如,如果给定字符 U+1EAD,我想返回所有这些规范等效序列的列表:

0061 0302 0323
0061 0323 0302
00E2 0323
1EA1 0302
1EAD

(我并不特别关心接口(interface)是根据 USV 数组还是 utf 字符串。)

最佳答案

这是XY问题吗?如果您想比较/匹配 2 个 unicode 字符串,并且担心编码重音字符的不同方式会产生误报,那么最好的方法是使用 Unicode 中的规范化函数之一来规范化 2 个字符串::标准化,在进行比较或匹配之前。

否则会有点乱。

您可以使用 charnames::viacode(0x1EAD); 获取完整的角色名称(对于 U+1EAD,它将是带有圆形和下面的点的拉丁小写字母 A),并通过在 WITH|AND 上拆分名称来获得各种组成字符。然后您可以生成基本字符 + 修饰符和其他修饰符的所有组合(检查它们是否存在!)。此时您将遇到将全名中的组合字符名称(例如CIRCUMFLEX)与组合字符真实名称(COMBINING CIRCUMFLEX ACCENT)匹配的问题。这可能有规则,但我不知道。

这将是我幼稚的尝试,可能有更好的方法可以做到这一点,但到目前为止还没有人自愿提供信息......

关于perl - 如何在 Perl 中枚举所有 Unicode 规范等效序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com