August 25, 2003

PostgreSQL使用時にトラックバックを受信できなくなる問題への対処

[ Movable Type ]

以前にエントリ 'トラックバック不調の原因は PostgreSQL とゴミ文字' で記述した PostgreSQL を使っているときにトラックバックが正常に受信できない問題、ちょっと時間を見つけて直してみました。以下、その方法。

とりあえず EUC-JP パッチを当てた MovableType での対処方法です。(UTF-8 で同じ問題が起きるのかどうかよく分からないので)

lib/MT/App/TrackBack.pm の 182行目あたりから

if (length($excerpt) > 255) {
    $excerpt = substr($excerpt, 0, 252) . '...';
}

という記述がありますが、その直後に以下のコードを挿入します。

if ($charset eq 'euc') {
    my $remain = '...' if ($excerpt =~ s/\.\.\.$//);
    if ($excerpt =~ /\x8F$/ or $excerpt =~ tr/\x8E\xA1-\xFE// % 2) {
        chop $excerpt;
    }
    $excerpt .= $remain if (defined $remain);
}

Perl の substr() でマルチバイトの文字列を一定の長さで切り詰めた場合などに残るゴミ文字を削除しています。ここではPerlメモ '文字が途切れているか判定する'を参考に、EUC-JPで途切れた文字を削除してます。

Posted by naoya at August 25, 2003 03:38 PM | トラックバック (1)  b_entry.gif
トラックバック [1件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/376
TrackBackのエラーについて(送信元MT3.11英語版から送信先 DB PostgreSQLのとき)
Excerpt: データベース PostgreSQLを使用すると、文字化けしたTrackBack を受信できないようです。 また、Movable Type3.11リリースの動的生...
Weblog: Xrea.comさんのサーバー応用編
Tracked: October 8, 2004 11:20 AM
コメント [2件]

先日はどうもです。
日本語パッチにこの部分のコードを拝借させていただきました。
大丈夫だったでしょうか。

[1] Posted by: milano at September 1, 2003 04:45 PM [返信]

どうもです。

全然大丈夫です。どんどん持っていってくださいまし。:)

[2] Posted by: naoya at September 1, 2003 10:07 PM [返信]