【发布时间】:2013-09-08 00:44:57
【问题描述】:
我有一个 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.
有人有小费吗? 有 谢谢!
【问题讨论】:
-
“Unicode 没有破折号”。这是不真实的。 fileformat.info/info/unicode/char/2013/index.htm
标签: perl unicode utf-8 buffer byte-order-mark