Perl中的捷克语排序
我有以下perl程序Perl中的捷克语排序,perl,sorting,unicode,multilingual,Perl,Sorting,Unicode,Multilingual,我有以下perl程序 use 5.014_001; use utf8; use Unicode::Collate::Locale; require 'Unicode/Collate/Locale/cs.pl'; binmode STDOUT, ':encoding(UTF-8)'; my @old_list = ( "cash", "Cash", "cat", "Cat", "čash", "
use 5.014_001;
use utf8;
use Unicode::Collate::Locale;
require 'Unicode/Collate/Locale/cs.pl';
binmode STDOUT, ':encoding(UTF-8)';
my @old_list = (
"cash",
"Cash",
"cat",
"Cat",
"čash",
"dash",
"Dash",
"Ďash",
"database",
"Database",
);
my $col= Unicode::Collate::Locale->new(
level => 3,
locale => 'cs',
normalization => 'NFD',
);
my @list = $col->sort(@old_list);
foreach my $item (@list){
print $item, "\n";
}
此程序打印输出:
现金
现金
猫
猫
čash
猛冲
猛冲
Ď灰
数据库
数据库
我相信仔细的观察者也会得出这样的结论
如果您对此有任何见解,我将不胜感激。如果默认排序不适用于您,则此常见解决方法是一种简单的自己动手的方法:
通过转换字符串生成排序数组:如果
a
和a
应该相等,则将两者转换为a
;如果a
应该跟在a
后面,则将其转换为a[
,例如(z
后面的任何字符都可以)。将ch
转换为h[
,如果我理解正确的话,后面是h
。然后将原始数组与排序数组一起排序。尽管捷克语是我的母语,但我并不完全了解捷克语的排序规则。但可以肯定的是,对于带有变音符号的ď、ť、ň和wovel,变音符号的重要性低于其他捷克语字符,如č
为什么?这与发音有关。除了同化和非母语单词外,除了d、t和n之外,所有辅音都有清晰的发音,不管上下文如何。(“Ch”被视为一个单独的字母。)这三个字母(d、t和n)后跟“i”、“í”或“ě”时可以“软化”.在这些情况下,他们的发音就像他们有一个卡隆一样(háček)。因此,他们的发音不那么重要。我希望(1)有人验证我的结果是正确的(2)有某种“修复”的方法我对捷克语几乎一无所知,但如果CLDR没有具体说明在捷克语中,ď在d之后是它自己的字母排序,就像č在c之后是它自己的字母排序一样,那么这就可以解释你所看到的。如果你通过对构造函数使用精心编制的
--entry
参数,并精确指定覆盖的DUCET元素,使其行为与默认值--locale=>“cs”
不同。我没有收到您的ping,因为您没有对我的帖子发表评论,也没有向我的某个评论链添加评论。