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('格安')); です。

decode_entities("格") で Unicode 文字になるから、あとはそれを encode("utf-8") なりすればいいのでは?
encode("utf-8", decode_entities("格"));
おぉ!
encode('utf-8', decode_entities('格安'))
でできますた。decode_entitiesですでにUnicodeになっているんですね…。
あとはutf-8で出力するためにencode("utf-8")すればいいのか。
ありがとうございます!