Perl 6错误消息:块中格式错误的UTF-8

问题描述 投票:7回答:2

我正在尝试阅读下载的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

如何避免这种情况并访问文件的内容?

perl6
2个回答
11
投票

如果在打开文件时没有指定编码,它将假定为utf8。显然,您要打开的文件包含无法解释为UTF-8的字节。因此错误消息。

根据您要对文件内容执行的操作,您可以设置:bin命名参数,以便以二进制模式打开文件。或者您可以使用特殊的utf8-c8编码,它将采用UTF-8直到遇到无法编码的字节:在这种情况下,它将生成临时代码点。

有关更多信息,请参阅https://docs.perl6.org/language/unicode#UTF8-C8


3
投票

对于slurp,如果你对编码有所了解,你也可以专门添加编码。

来自文档(https://docs.perl6.org/routine/slurp):

my $text_contents   = slurp "path/to/file", enc => "latin1";

我今天用它来编写一个用ISO-8859-1编码的愚蠢文件。

© www.soinside.com 2019 - 2024. All rights reserved.