我正在尝试处理包含城市名称列表的文件。我的目标是输出音译为标准ASCII的城市名称列表。出于某种原因,我只是遇到了问题。我一直在使用Perl中的iConv和Text :: Unidecode库,两者都让我失望。
以下是我称之为cities.txt:
的文件中城市名称的示例列表Måløv
Magtenbølle
Zvonarëvka
Denver
Zvëzdka
New York
通过iconv
运行此操作会返回以下内容:
iconv -fUTF-8 -tASCII//TRANSLIT//IGNORE cities.txt
Mal?v
Magtenb?lle
Zvonarevka
Denver
Zvezdka
New York
这在一些非ascii字符上表现很好,但是失败了,特别是ø
个字符。我的列表有几千个条目 - 虽然我实际上没有在一个小样本集上研究结果,但我确信还有其他失败。
我的perl尝试看起来像这样:
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Text::Unidecode;
while (<>) {
print unidecode $_;
}
从那里输出如下:
MAY=lA,v
MagtenbA,lle
ZvonarA<<vka
Denver
ZvA<<zdka
New York
奇怪的是,如果我使用直接语句,Perl会工作。 E.g。
...
print unidecode("Måløv");
将按照我的预期输出“Malov”。
我做错了什么?
答案 0 :(得分:8)
答案 1 :(得分:0)