Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Perl中读取ISO 8859-1(拉丁语-1)编码的文本_Perl_Encoding_Input_Latin1 - Fatal编程技术网

如何在Perl中读取ISO 8859-1(拉丁语-1)编码的文本

如何在Perl中读取ISO 8859-1(拉丁语-1)编码的文本,perl,encoding,input,latin1,Perl,Encoding,Input,Latin1,因此,我试图编写一个perl脚本来读取一个用拉丁语1编码的文件。出于某种原因,这根本不可行。当我尝试对我知道的文件中的字符(在第一行)进行简单搜索时,没有显示任何内容。我使用使用编码“ISO8859-1”下面,但我也尝试了binmode(标准输入“:utf8”)。有没有关于我可能做错了什么以及如何改正的建议 use encoding "iso 8859-1"; while(<>) { if(/ó/gi) { print "Found one!\n";

因此,我试图编写一个perl脚本来读取一个用拉丁语1编码的文件。出于某种原因,这根本不可行。当我尝试对我知道的文件中的字符(在第一行)进行简单搜索时,没有显示任何内容。我使用使用编码“ISO8859-1”下面,但我也尝试了binmode(标准输入“:utf8”)。有没有关于我可能做错了什么以及如何改正的建议

use encoding "iso 8859-1";

while(<>)
{
    if(/ó/gi)
    {
    print "Found one!\n";
    }
}
使用编码“iso 8859-1”;
while()
{
if(/ó/gi)
{
打印“找到一个!\n”;
}
}

不要使用
使用编码
杂注:它坏了

请在此处指定编码:

use open ":encoding(Latin1)";
或者把它自己放在露天:

open(FH, "< :encoding(Latin1)", $pathname)
   || die "can't open $pathname: $!";
如果您使用的是
,那么
使用open
可能是最简单的


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

另一个问题是脚本的编码方式,因为它使用ó作为文字字符。@cjm:Ug,你说得对。我以前被
使用编码
烧死了。我现在有纯7位ASCII或UTF-8格式的程序文本,带有
使用utf8
pragma,因为我知道这是可行的。第一个解决方案不可行,第二个也不可行,但如果我使用第二个和第三个,它就行了。我想我现在只能对此感到满意了。@John:我不会写
/ó/
,除非你的源代码是utf8,而且你已经说过了。我会写
/\xF3/
。重音仍然存在一个问题:您是否希望它匹配非重音字符或不同重音的字符?如果是这样的话,你需要NFD和去标记它。
binmode(FH, ":encoding(Latin1)")
   || die "can't binmode to encoding Latin1";