【发布时间】:2013-02-27 21:56:53
【问题描述】:
我有以下测试脚本:
#!/usr/local/ActivePerl-5.16/bin/perl
use 5.014_001;
use utf8;
use Unicode::Collate;
use strict;
use warnings;
use Carp;
use Data::Dump;
use Encode qw( encode_utf8 );
use Unicode::Collate::Locale;
binmode STDOUT, ':encoding(UTF-8)';
my @words =("Értékesítési", "Értékesítési", "Érvényes", "EU-s", "Eszközmozgás");
my $coll = Unicode::Collate::Locale->new(locale => "hu");
my @result = $coll->sort(@words);
foreach my $item (@result){
print $item, "\n";
}
它输出:
Értékesítési
Értékesítési
Érvényes
Eszközmozgás
EU-s
但是根据我的匈牙利线人,在维基百科中,“E”在“É”之前。 谁能告诉我这是怎么回事?
谢谢。
【问题讨论】:
-
你是对的,E在É之前
-
你试过 HU 或 hu_HU 作为编码吗?
-
我试过 hu、hu_HU 和 HU,但每次,“EU-s”在上面的列表中都排在最后。我想我很困惑,因为我认为匈牙利语将 É 视为一个单独的字母,应该在 E 之后排序。那么这是 Unicode::Collate::Locale 中的错误吗?我想知道@tchrist 怎么想?根据这个维基百科页面,这两个应该被视为单独的字母。 en.wikipedia.org/wiki/Hungarian_alphabet
标签: perl unicode multilingual