如何在Perl中读取ISO 8859-1(Latin-1)编码文本

时间:2010-11-19 01:19:25

标签: perl encoding input latin1

所以我正在尝试编写一个perl脚本来读取一个用Latin-1编码的文件。由于某种原因,这只是没有成功。当我尝试简单搜索我知道的文件中的字符时(它在第一行),没有任何显示。我在下面使用使用编码“iso 8859-1”; ,但我也尝试过 binmode(STDIN,“:utf8”); 。关于我可能做错了什么,以及如何做对的任何建议?

use encoding "iso 8859-1";

while(<>)
{
    if(/ó/gi)
    {
    print "Found one!\n";
    }
}

1 个答案:

答案 0 :(得分:14)

请勿使用use encoding编译指示:它已损坏。

在此处指定编码:

use open ":encoding(Latin1)";

或将其置于开放状态:

open(FH, "< :encoding(Latin1)", $pathname)
   || die "can't open $pathname: $!";
打开后

binmode

binmode(FH, ":encoding(Latin1)")
   || die "can't binmode to encoding Latin1";

如果您使用<ARGV>,那么use open可能最简单。

不要忘记在输出流上设置编码。