我有一個腳本,將下載www網頁,我想提取文本並將其存儲在一個統一的編碼(UTF8會很好)。下載(UserAgent),解析(TreeBuilder)和文本提取似乎很好,但我不知道我是否正確保存它們。Perl編碼 - 將文件保存到UTF8
當打開例如notepad ++中的輸出文件時,它們不會查看;原始HTML視圖在文本編輯器中查找。
的HTML文件通常具有 的charset =窗口-1256或 的charset = UTF8
所以我想,如果我能得到一個UTF8的工作,那麼它只是一個再編碼的問題。假設我有一個保存到磁盤的HTML文件,下面是我嘗試過的一些內容。
my $tree = HTML::TreeBuilder->new;
$tree->parse_file("$inhtml");
$tree->dump;
從STDOUT意見.txt文件正確捕獲轉儲只 切換編碼在文本編輯器UTF8後的輸出...
$formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 50);
if (utf8::is_utf8($formatter->format($tree))) {
print " Is UTF8\n";
}
else {
print " Not UTF8\n";
}
結果表明這是UTF8當內容說,是,而不是UTF8,否則。
我已經厭倦
opening an file with ">" and ">:utf8"
binmode(MYFILE, ":utf8");
encode("utf8", $string); (where string is the output of formatter->format(tree))
但似乎沒有正常工作。
在那裏的任何專家知道我缺少什麼?
在此先感謝!
貌似問題是輸入編碼。我假設自從perl正在讀東西,如果它是UTF-8,它會正確地讀取它。顯然不是!此代碼幫助....現在我只需要弄清楚每種文件類型的編碼!當有一個content_type標籤時,它很簡單,但否則......?任何方式自動做到這一點? – TerpFan 2012-04-20 21:46:44
@TerpFan - 我的代碼允許您選擇正確的輸入編碼,所以如果您知道該輸入的編碼,它應該適用於您。如果不提供編碼類型,那麼它應該是您的默認閱讀編碼。我希望我的回答能幫助你。如果是這樣,請接受我的回答(點擊我答覆旁邊的數字旁邊的複選標記 - 它會將顏色更改爲綠色)。謝謝你,祝你好運! – 2012-04-20 21:49:54
謝謝。由於我使用HTML文件,我能夠先打開並找到編碼,然後重新打開它!這是關鍵.....我假設perl在第一個palce中正確打開文件... \t if($ fileline =〜m/charset =(\ S +)\「/){ \t \t $ charset = $ 1 ; – TerpFan 2012-04-23 03:34:15