如何获取已知Unicode字符名称列表

4

我该如何获取所有已知名称列表,以便在 Perl 中使用 "\N{...}"?无法确定如何使用 Unicode::UCD 或其他核心模块。


1
作为替代方案,可以在 perldelta 中找到支持的 Unicode 版本,并从 https://www.unicode.org/Public/ 下载 DerivedName.txt。 - Alexandr Evstigneev
有趣的是,我刚刚完成了一篇关于v5.32对名称匹配的增强的文章。如果您知道实际名称,那么您不应该使用它。 - brian d foy
1个回答

8

Unicode::UCD 和循环:

#!/usr/bin/env perl
use strict;
use warnings;
use Unicode::UCD qw/charinfo/;
use feature qw/say/;

say "Character names defined by Unicode ", Unicode::UCD::UnicodeVersion();
for (my $cp = 0; $cp <= 0x10FFFF; $cp += 1) {
    my $info = charinfo($cp);
    say $info->{"name"} if defined $info && $info->{"name"} ne "";
}

虽然这不包括名称别名,如果这很重要的话。 - Shawn
你可以通过在第三个平面(0x3FFFF是最后一个代码点)之后停止来使其更快运行,因为几乎所有在此之后的内容都未分配或私有使用。但这样做可能会影响将来的兼容性。 - Shawn
如果您感兴趣的话,我有一个脚本可以创建一个SQLite数据库,以便更轻松地查询UCD。 - Shawn
我看到一些代码在[E0001,E0020..E007E](https://unicode.org/charts/PDF/UE0000.pdf)中(不知道它们是什么),以及[E0100..E01EF](https://unicode.org/charts/PDF/UE0100.pdf)中(组合字符以选择替代字形)。不知道它们为什么会出现在那里。 - ikegami
charnames 模块执行类似的工作。 - brian d foy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接