错误 - Perl执行失败。 syswrite中的宽字符

时间:2014-12-05 01:42:29

标签: perl cgi widestring html-escape

我有perl script运行一系列命令,将stdinstderr重定向到文本文件中。脚本完成后,我使用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';

关于我需要做些什么来实现这项工作?

2 个答案:

答案 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);