【问题标题】:Collation of "E" and "É" in Hungarian, using Perl and Unicode::Collate::Locale匈牙利语中“E”和“É”的排序规则,使用 Perl 和 Unicode::Collat​​e::Locale
【发布时间】: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::Collat​​e::Locale 中的错误吗?我想知道@tchrist 怎么想?根据这个维基百科页面,这两个应该被视为单独的字母。 en.wikipedia.org/wiki/Hungarian_alphabet

标签: perl unicode multilingual


【解决方案1】:

匈牙利排序规则将 E 和 É 在初级级别视为相同,因此结果是正确的。当两个词的区别仅在于有无重音重音时,没有重音的词在前,但在不考虑重音符号的情况下进行初级排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2013-02-13
    • 2011-09-21
    • 1970-01-01
    相关资源
    最近更新 更多