是否存在标准的Perl模块或函数,给定Unicode 组合字符序列(或更一般地,任意Unicode文本字符串),将生成所有规范等效字符串的列表?
例如,如果给出字符U + 1EAD,我想找回所有这些规范等效序列的列表:
0061 0302 0323
0061 0323 0302
00E2 0323
1EA1 0302
1EAD
Run Code Online (Sandbox Code Playgroud)
(我并不特别在意接口是否符合USV或utf字符串的数组.)
这是 XY 问题吗?如果您想比较/匹配 2 个 unicode 字符串,并且担心对重音字符进行不同的编码方式会产生漏报,那么最好的方法是使用 Unicode 中的标准化函数之一对 2 个字符串进行标准化::在进行比较或匹配之前进行标准化。
不然会有点乱。
您可以使用以下命令获取完整的字符名称charnames::viacode(0x1EAD);(对于 U+1EAD,它将是拉丁文小写字母 A,带有引号和下面的点),并通过使用 WITH|AND 拆分名称来获取各种组合字符。然后,您可以生成基本字符+修饰符和其他修饰符的所有组合(检查它们是否存在!)。此时,您将遇到将全名中的组合字符名称(例如CIRCUMFLEX)与组合字符真实姓名(COMBINING CIRCUMFLEX ACCENT)相匹配的问题。可能有这方面的规则,但我不知道。
这将是我天真的尝试,可能有更好的方法来做到这一点,但到目前为止还没有人自愿提供信息......
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |