• 締切済み

WWW::Mechanizeの文字コードについて質問

WWW::Mechanizeの文字コードについて質問 以下のようなソースコードを書いて実行してみたのですが どのサイトを取得しても、すべて文字コードがUTF8だと認識されます。 ------------------------------------------------------- #!/usr/bin/perl #WWW:MechanizeでHTMLの取得 use WWW::Mechanize; $w = WWW::Mechanize->new(); $w->get("URL"); $html=$w->content; #文字コードの判別 use Encode; use Encode::Guess qw/ascii utf8 euc-jp shiftjis 7bit-jis/; my $dec = Encode::Guess->guess($html); print$dec->name; ------------------------------------------------------- 例えば以下のサイトは文字コードがEUC-JPですがこれもprintされるのはUTF8となってしまいます。 http://barukanlog.blog31.fc2.com/blog-entry-541.html WWW:Mechanizeでサイトを取得し、サイトの文字コードを調べてすべてsjisにする ということがしたいのですが、すべてutf8に判断されて先へ進めないんです。 何か設定やメソッドを追加しなくてはいけないのでしょうか? わかりにくい質問かとは思いますがご回答お願いします。

みんなの回答

回答No.2

以下と同じ問題だと思います。 http://sida.sblo.jp/article/35442814.html ただし、http://barukanlog.blog31.fc2.com/blog-entry-541.html はgzip圧縮で送られてくるようで、上のurlのやり方だと文字コードを判定できません。 キャラクタセットだけを知りたいのでしたら、以下のようにする手もあります。 my $mech = WWW::Mechanize->new(); my $res = $mech->get( $url ); print $res->content_charset;

  • diszo
  • ベストアンサー率78% (32/41)
回答No.1

WWW::Mechanizeでは、取得したHTMLをすべて utf8で変換しているようです。 #自分も試してみましたが、utf8になりました。 なので、取得した後にsjisに変換すればいいのではないでしょうか? #文字コードの判別 use Encode; use Encode::Guess qw/ascii utf8 euc-jp shiftjis 7bit-jis/; $html = encode('shiftjis', $html );#←ここに追加 my $dec = Encode::Guess->guess($html); print$dec->name; #shiftjisになると思います。

関連するQ&A