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