プロが教えるわが家の防犯対策術!

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. …

WWW:Mechanizeでサイトを取得し、サイトの文字コードを調べてすべてsjisにする
ということがしたいのですが、すべてutf8に判断されて先へ進めないんです。

何か設定やメソッドを追加しなくてはいけないのでしょうか?
わかりにくい質問かとは思いますがご回答お願いします。

A 回答 (2件)

以下と同じ問題だと思います。


http://sida.sblo.jp/article/35442814.html

ただし、http://barukanlog.blog31.fc2.com/blog-entry-541. … はgzip圧縮で送られてくるようで、上のurlのやり方だと文字コードを判定できません。

キャラクタセットだけを知りたいのでしたら、以下のようにする手もあります。
my $mech = WWW::Mechanize->new();
my $res = $mech->get( $url );
print $res->content_charset;
    • good
    • 0

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になると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!