2014-12-05 19 views
1

我有一個perl script,它運行一堆命令將stdinstderr重定向到一個文本文件中。腳本完成後,我使用cgi將文件的內容顯示到調用它的網頁上。錯誤 - Perl執行失敗。 syswrite中的寬字符

至少其中一條線寫信給該文件包含寬字符,如:

保存到:ârabbitmq-服務器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的PARAM我在一個谷歌發現,但它也沒有工作。

use CGI '-utf8'; 

關於我需要做什麼來完成這項工作的任何想法?

回答

2

使用binmode STDOUT, ":utf8";打開對UTF8打印的支持。

+0

謝謝,這使我得到修復,但沒有直接工作。 – 2014-12-05 17:51:50

2

binmode STDOUT, ":utf8";不直接爲我工作,但它指出我在正確的方向。我在文件句柄上使用了binmode,並解決了這個問題:

open(my $fh, '<:encoding(UTF-8)', $filename) 
    or die "Could not open file '$filename' $!"; 
binmode($fh); 
相關問題