Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl中的捷克语排序_Perl_Sorting_Unicode_Multilingual - Fatal编程技术网

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", "

我有以下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",
        "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 猛冲 猛冲 Ď灰 数据库 数据库

我相信仔细的观察者也会得出这样的结论

  • č是一级字母,而Ď不是
  • Perl中捷克语的Unicode::Collate::Locale排序不正确
  • 我愿意相信(1),以下几点支持了我的观点:

    上面写着:

    让我们尽可能按照捷克现行公约对条目进行排序。也就是说,只有以下字符具有排序意义:

    a b cčd e f g h ch i j k l m n o p q rřsšt u v w x y zž

    但我很困惑,因为我认为“D加v”是捷克字母表中的一级字母

    当我需要他时,@tchrist在哪里


    如果您对此有任何见解,我将不胜感激。

    如果默认排序不适用于您,则此常见解决方法是一种简单的自己动手的方法:


    通过转换字符串生成排序数组:如果
    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,因为您没有对我的帖子发表评论,也没有向我的某个评论链添加评论。