當我試圖下載與下面的一些代碼的HTML文件:WWW ::機械化和寬字符警告
$mech->get($link)
$mech->save_content("file.html");
我得到警告:
Wide character in print at C:/strawberry/perl/site/lib/WWW/Mechanize.pm line 2040.
有人能解釋我如何可以修復這個警告?
當我試圖下載與下面的一些代碼的HTML文件:WWW ::機械化和寬字符警告
$mech->get($link)
$mech->save_content("file.html");
我得到警告:
Wide character in print at C:/strawberry/perl/site/lib/WWW/Mechanize.pm line 2040.
有人能解釋我如何可以修復這個警告?
你需要確保輸出文件句柄與正確的編碼打開。
從在文檔短暫一瞥,它看起來並不像機甲有保存的文件配置的編碼,所以你可以抓住的內容和自己保存:
$mech->get($link);
my $content = $mech->content;
open my $fh, '>:utf8', $file or die "$file: $!";
print $fh $content;
在open
的:utf8
位將確保發送到文件句柄的數據被正確編碼爲UTF-8。
另一種方式來做到這一點是手動編碼:
use Encode;
my $content = encode 'utf8', $mech->content;
open my $fh, '>', $file or die "$file: $!";
binmode $fh;
print $fh $content;
此前1.73版本,你必須保存的內容使用solution posted by @friedo手動。
此後,save_content()
讓你設置由機械化打開文件句柄時使用的I/O層。通過將binmode設置爲:utf8
,如下所示,寬字符被寫入而不發出警告:
$mech->save_content("file.html", binmode => ':utf8');
這並沒有解決我的問題。我仍然收到廣泛的字符警告。 – CJ7