トラックバック文字化け

ブログは無事完成したが、使っているとトラックバックに問題があることが発覚した。
エキサイトブログなど、一部のブログにトラックバックすると文字化けが発生するのだ。
自分のサイトで文字化けが発生する分は、まあ大したことではないが、他人のサイトにトラックバックしてそれが文字化けしていると他人に迷惑を掛けてしまうことになる。

いろいろ調べてみると、やはりこの問題は取り上げられていた。


Milano::Monolog: Trackbackの文字コード指定方法最終(予定)
Movable Type3.15-jaのトラックバック文字化け問題 – 日記 (Blog) – Zerosylph

文字化けの原因は、エキサイトブログがUTF-8以外の文字コードを受け付けないからということだった。
そもそもブログで使用する文字コードはUTF-8が推奨されているらしいのだが、このサイトはEUC-JPを使用している。
XREAで用意されていたMovable Typeの自動設置cgiがEUC-JPのみサポート対象となっていたこともあるが、どこかのサイトでUTF-8にすると逆に文字化けを起こすと書いてあったので、EUC-JPにしていた。

詳しいことは分からないが、結局は、トラックバックを受ける場合は特に問題は無く、送信する際に文字コードをUTF-8にすることで対応できるということである。
具体的には、”lib/MT.pm”の修正だけ行えば良いということらしい。
Movable Type 3.151-jaの場合、996行目以降のping処理部分を修正した。

この対策後、トラックバックの文字化けは発生していないので、うまくいったようである。

#以下、覚え書き(引用元:Milano::Monolog: Trackbackの文字コード指定方法最終(予定)

## 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;

シェアする

  • このエントリーをはてなブックマークに追加

フォローする