我在 Perl/CGI 中有一个应用程序,我在其中收到一个 utf8 txt 文件并处理其内容。
出于某种原因(我认为 Perl 将文件划分为 4096 字节的缓冲区,并且只有第一个具有字节顺序标记)Perl 在 4096 字节之后将文件的内容解释为 Unicode。
如果我在文件中间散布一些短划线(“-”)(每个 4k 块至少一个),程序会将其识别为 utf8,可能是因为 Unicode 没有短划线。
我从 html 页面接收 txt 并将其发送到这样的标量变量:
while(my $l = <$fh>){
$text .= $l;
}
我试图通过用破折号连接文件的每一行来强制使用 utf8:
while(my $l = <$fh>){
$text .= "–".$l;
}
但我得到这个错误:
Wide character in print at (eval 12) line 94.
有人有小费吗?有 谢谢!