Engadget Japaneseで使われている日本語のエンティティの変換

| コメント(2) | トラックバック(0)

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

トラックバック(0)

トラックバックURL: http://blog.clouder.jp/mt/mt-tb.cgi/617

コメント(2)

decode_entities("格") で Unicode 文字になるから、あとはそれを encode("utf-8") なりすればいいのでは?

encode("utf-8", decode_entities("格"));

おぉ!

encode('utf-8', decode_entities('格安'))

でできますた。decode_entitiesですでにUnicodeになっているんですね…。
あとはutf-8で出力するためにencode("utf-8")すればいいのか。

ありがとうございます!

コメントする

検索

広告

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.12