8

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

use encoding "iso 8859-1";

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

1 回答 1

18

不要使用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可能是最简单的。

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

于 2010-11-19T01:23:49.797 回答