Exciteブログでトラックバック文字化け騒動
早速トラックバックをしてみたところ見事に文字化けしちゃいました(汗)。調べてみたら文字コードの違いによるものだそうです。私のMTブログの文字コードは「Shift_JIS」、トラックバックを送ったExciteブログは「UTF-8」でした。本来は、トラックバックを「UTF-8」で送らなければいけないようですが、MTブログでは、指定した文字コードで送っちゃうみたいなのです!
一つUTF-8でブログを運営しているんだけど、IEのバグにより問答無用で文字の書体が「明朝体」になってしまうんですよ!これは、一大事「ゴシック体」好きの私にはとても堪えられない!そんなわけで、Shift_JISかEUC-JPでの運営になっちゃうわけなんです。で、WindowsなのでShift_JISの方が扱いやすいわけなんですよー♪でも、それだとなんの解決にもなんないんですよね(汗)。
トラックバックをUTF-8で送信することで、文字化け解決
見つけました!トラックバックをUTF-8で送信する方法を!
先日の座談会でちらっとTrackbackの文字コードの指定方法について話が出ました。その時、送るときはUTF-8で統一しませんか?という案が出ました。参加したメンバーが軒並みすごい方々だったので、この案を実装しても文句出ないかなと思い、早速実装した日本語化パッチをアップしました。早速といいながら、座談会から既に1週間経ってしまいましたが。ということで、Movable TypeのTrackbackはUTF-8で送るのを最終案としたいところ。賛同が得られたらウレシイです。ソース読めばわかんだろと思って書かなかったけど、仕様はこんな感じ。
- 送信時
- 文字コードはUTF-8で送信
- Content Bodyに「charset=utf-8」を付与
- 送信時
- charsetパラメータがあればそれを信用
- charsetパラメータが無ければタイトル等から文字コードを推測
ということで、送信時にUTF-8にするようになっただけで、他のコードで送られても問題ないし、送られる側のサイトで文字コード判別の助けになるようにcharsetパラメータも送ってるし、いろいろと考えています。RubyでUTF-8の扱いが面倒とか言われちゃうと、すみませんとしか言いようがないですが。
ということですが、問題のコードは、MTのバージョンが違うのか、違う形で追加されていたりされていなかったりするので引用しませんでした。「MT Version 3.151-ja」では、「lib/MT.pm」の996行目付近を追加・修正するだけで対応出来ました。
## Build query string to be sent on each ping.
my @qs;
push @qs, 'title=' . MT::Util::encode_url($entry->title);
push @qs, 'url=' . MT::Util::encode_url($entry->permalink);
push @qs, 'excerpt=' . MT::Util::encode_url($entry->get_excerpt);
push @qs, 'blog_name=' . MT::Util::encode_url($blog->name);
my $qs = join '&', @qs;
↓
## Build query string to be sent on each ping.
require Jcode;
my $charset = {'Shift_JIS'=>'sjis','ISO-2022-JP'=>'jis','EUC-JP'=>'euc',
'UTF-8'=>'utf8'}->{$mt->{cfg}->PublishCharset} || 'utf8';
my @qs;
push @qs, 'title=' . MT::Util::encode_url(Jcode->new($entry->title, $charset)->utf8);
push @qs, 'url=' . MT::Util::encode_url(Jcode->new($entry->permalink, $charset)->utf8);
push @qs, 'excerpt=' . MT::Util::encode_url(Jcode->new($entry->get_excerpt, $charset)->utf8);
push @qs, 'blog_name=' . MT::Util::encode_url(Jcode->new($blog->name, $charset)->utf8);
push @qs, 'charset=utf-8';
my $qs = join '&', @qs;
Posted By PONTA : 2005/05/08-23:21
現在、私が開発した「超簡単!!アマゾン アソシエイト応援サイト:Azmix」の...
はじめまして、かわぐちと申します。
うひょ~、貴重な情報ありがとうございます。
おかげさまで、ブログ開設依頼の悩みのタネが
解消できちゃいました。
本当に、ありがとうございます。
これからも、よろしくお願いします。
私の送っているトラックバックが文字化けを 起こしていることを発見しました。 調べ...