Mar 03, 2005 [去年の今ごろ]
writeback プラグインの日本語処理
トラックバックは、なかなかやってこない。完全に Blog コミュニケーションの蚊帳の外にあるうちのサイトです。さみしいので実験と称して手前でトラックバックを送信してみました。
wakwak のサーバからはトラックバックを送ることができないので Blog People の「ぶろっぐぴんぴん」というアプリケーションを利用しました。トラックバック送信元の URL 、タイトルやコメントを入力して、送信。わくわくしながら writeback欄を見てみるとなんと何も表示されていない。以前 writeback プラグインに手を加えたときにトラックバックに関する項目を表示しないようにしたのを忘れていました。
それを直して再度トラックバックを送ると今度は表示はされたものの、文字化けしてしまいました。どうやら「ぶろっぐぴんぴん」のトラックバックは UTF8 で送信されているようで、それを EUC で表示しようとするから文字化けがおこったようです。
解決策として、writebackプラグインで表示するときに文字コードを判別して EUC に変換するという方法をとりました。本当ならトラックバックが送られてファイルに記録されるときに変換してしまえばよいのですが今までのファイルとの互換性も考えて上の方法をとりました。
以下は writebackプラグインの変更部分です。文字コードの判別、変換には perl 5.8 以降の Encode モジュールを用いています。それについては Perl 5.8.x Unicode関連 を参考にしました。
まず Encode モジュールを使います宣言。
package writeback; use Encode qw(from_to); use Encode::Guess qw/euc-jp shift-jis/;
次に $writeback 行を出力する部分で文字コードの判別と変換を行います。
$writeback =~ s/\$writeback::(\w+)/$param{$1}/ge; my $guess = Encode::Guess::guess_encoding($writeback); unless(ref $guess){ Encode::from_to($writeback, "euc-jp", "euc-jp") }else{ $writeback = $guess->decode($writeback); $writeback = Encode::encode("euc-jp", $writeback); }
以上です。
これでどんな文字コードが送られてきても完璧に表示することができる、はずです。実験トラックバックお待ちしております。
コメントを書く
トラックバックURL: http://park18.wakwak.com/~ogane/cgi-bin/blosxom.cgi/computer/blosxom/200503031727.trackback
Posted at 17:27 - permalink - category: Blosxom - tags: blosxom
これまでの記事。
2007 | 12 | 11 | 10 | 9 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
2006 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
2005 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
2004 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
2003 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
2002 | 12 |
この記事へのコメント
wholesale bags http://www.googletest.com