gpt4 book ai didi

perl - 音译成 ASCII 时遇到问题

转载 作者:行者123 更新时间:2023-12-05 09:24:14 28 4
gpt4 key购买 nike

我正在尝试处理一个包含城市名称列表的文件。我的目标是输出这些城市名称的列表,这些城市名称被音译为标准 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 确实可以工作。例如

...
print unidecode("Måløv");

将如我所料输出“Malov”。

我做错了什么?

最佳答案

您需要以 UTF-8 格式读取您的输入。每this question , 尝试添加

use open qw(:std :utf8);

在你的 while(<>) 之前循环。

关于perl - 音译成 ASCII 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14946190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com