我有perl script
运行一系列命令,将stdin
和stderr
重定向到文本文件中。脚本完成后,我使用cgi。
写入该文件的至少一行包含宽字符,例如:
保存到:ârabbitmq-server-3.3.5-1.noarch.rpmâ
我在输出到网页时尝试html转义文件,但无济于事:
use CGI;
.
.
.
my $filename = 'tempoutput.txt';
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
while (my $row = <$fh>) {
chomp $row;
print $cgi->p("");
print $cgi->escapeHTML("$row");
}
我也试过更改我在谷歌中发现的CGI的参数,但它也没有用。
use CGI '-utf8';
关于我需要做些什么来实现这项工作?
答案 0 :(得分:2)
使用binmode STDOUT, ":utf8";
打开对UTF8打印的支持。
答案 1 :(得分:2)
binmode STDOUT, ":utf8";
直接对我不起作用,但它指出了我正确的方向。我在文件句柄上使用了binmode,解决了这个问题:
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
binmode($fh);