私はwwwページをダウンロードするスクリプトを持っています。テキストを抽出し、一様なエンコーディング(UTF8はうまくいくでしょう)で保存したいと思います。ダウンロード(UserAgent)、解析(TreeBuilder)、テキスト抽出はうまくいくようですが、正しく保存しているかどうかはわかりません。Perlエンコーディング - ファイルをUTF8に保存
たとえば、notepad ++のように出力ファイルを開くと表示されません。元のHTMLビューは、テキストエディタで検索されます。
HTMLファイルは、通常 のcharset =ウィンドウ-1256または 文字セットを持っている= UTF8
私は仕事にUTF8 1を得ることができるのであれば、私はそれだけで再符号化の問題だった、考え出し。ここでは、HTMLファイルをディスクに保存していると仮定して、試したことがあります。
my $tree = HTML::TreeBuilder->new;
$tree->parse_file("$inhtml");
$tree->dump;
のみテキストエディタでUTF8にエンコードを切り替え 後.txtファイルに正しくSTDOUTビューのために撮影したダンプからの出力...
$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
@TerpFan - 私のコードでは正しい入力エンコーディングを選択できるので、その入力のエンコーディングが分かっていればうまくいくはずです。エンコーディングタイプが指定されていない場合は、デフォルトの読み込みエンコーディングにする必要があります。私の答えがあなたを助けてくれることを願います。もしそうなら、私の答えを受け入れてください(私の答えの横にある数字の下のチェックマークをクリックしてください - それは緑色に変わります)。ありがとう、幸運! –
ありがとうございます。私はHTMLファイルを扱っていたので、最初に開いてエンコーディングを見つけてから、正しく再オープンできました!それは鍵です.....私は、最初の場所でファイルを正しく開いたと仮定しました。\t if($ fileline =〜m/charset =(\ S +)\ "/){ \t \t $ charset = $ 1 ; – TerpFan