我正在尝试阅读下载的html文件
my $file = "sn.html";
my $in_fh = open $file, :r;
my $text = $in_fh.slurp;
我收到以下错误消息:
Malformed UTF-8
in block <unit> at prog.p6 line 10
如何避免这种情况并获取对文件内容的访问权?
答案 0 :(得分:11)
如果在打开文件时未指定编码,则会假定为utf8
。显然,您要打开的文件包含无法解释为UTF-8的字节。因此错误信息。
根据您要对文件内容执行的操作,您可以设置:bin
命名参数,以便以二进制模式打开文件。或者您可以使用特殊的utf8-c8
编码,它将采用UTF-8,直到遇到无法编码的字节为止:在这种情况下,它将生成临时代码点。
答案 1 :(得分:3)
对于Slurp,如果您对编码有所了解,也可以专门添加编码。
摘自文档(https://docs.perl6.org/routine/slurp
):
my $text_contents = slurp "path/to/file", enc => "latin1";
我今天将它用于ISO-8859-1编码的愚蠢文件。