Engadget JapaneseというサイトのHTMLに書いてある日本語を euc-jp とか utf-8 にしたいのだけど、方法がわかりません。 ここのサイトのHTMLの meta を見ると charset="iso-8859-1" だということがわかります。ふむふむと思って見てみてもエンティティになっているっぽく「格安」こんな感じになっています。実際これをHTMLで書くと下記のようになります。 「格安」(←実際にはHTML内で「格安」こう書いてます) このように「格安」とブラウザ上には表示されます。。。うーむ。どうやってこのエンティティをeuc-jpやutf8にするのかと小一時間。
use Encode;
use HTML::Entities;

print decode('iso-8859-1', decode_entities('格安')), "\n";
こんな感じにしてutf-8にしてみようと、やってみたりしたのですが、「Wide character in subroutine entry at /usr/lib/perl/5.8/Encode.pm line 166.」となってしまいます。。。 まだ調査途中なのですが、煮詰まったのでエントリを書いてみるテスト。もうちょと調査してみます。
Tue Apr 11 02:18:44 2006 追記
コメントでmiyagawaさんに教えてもらいました。decode_entitiesした時点でUnicodeになっているので、あとは utf-8 で出力したければ、encode('utf-8', decode_entities('格安')) したらよいようです。ちなみに euc-jp にしたけりゃ encode('eucjp', decode_entities('格安')); です。