星の海でトーク: 「送信したTBが文字化けしてしまう〜!」の対応完了

« バンブーブレード 26話 | メイン | xxxHOLiC◆継 1話 »

2008年04月06日

「送信したTBが文字化けしてしまう〜!」の対応完了

[サイト運営の戯言] [更新情報など] [日記]

こちらのサーバーに移転後、FC2のサイト様にトラックバック
(以下、TBと表記)を送り、確認したところ“文字化け
しているではありませんか!

このままでは、FC2のどのサイト様に送っても、文字化けしてしまいます…
(試していませんが)

以下、対応詳細になります。

「頂いたTB」が文字化けしている分には(こちらで)修正できるから
いいのですが、「送ったTB」が文字化けしてしまうと、こちらでは
どうしようもなくなってしまうので、何とかならないのか〜!
と、対応に苦戦していました。

で、こんな時に役に立つのが、“先人の教え”ですね。
同じような状況で苦労された方が、貴重な記録を残していてくれました。
とてもありがたいことです。

EUC環境からのトラックバック不具合解消?文字化け

上記サイトを参考に、対応してみました。
以下は、その備忘録になります。

1.ブログ環境
  Movable Type 3.33-ja (以下、MT3.33と表記)
  文字コード:EUC-JP(※)
  ※ サーバーの文字コードが「EUC-JP」なので、止む無く、次の方法で
    ブログの文字コードを変更(「UTF-8」→「EUC-JP」)しています。

  ・環境設定ファイル「mt-config.cgi」に、次の行を追加する。
PublishCharset EUC-JP

2.事前確認
  「Jcode.pm」と「Jcodeフォルダ」が、「/extlibフォルダ」に
  存在していることを確認。(なければ、別途ダウンロードする必要
  があるのですが、MT3.33では必要ないようです)

3.修正
 ・「/libフォルダ」の「MT.pm」を以下のように修正する。
  (2ヶ所あります)

 <修正前 1>
## 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;
 <修正後 1>
  ・赤字を追加
## 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;

 <修正前 2>
  ・上記対応だけだと、FC2以外のサイト様に送信した時、
   文字化けします。
  ・青字削除
$req->content_type("application/x-www-form-urlencoded; charset=$enc");

 <修正後 2>
$req->content_type("application/x-www-form-urlencoded");

  自力では、絶対に分かりませんね…

4.対応まとめ
  「送信先と同じ文字コード(EUC-JP)だから、文字化けしない筈だ」
  という先入観がよくなかったようです。
  結局、「今まで文字化けしなかった文字コード(UTF-8)」で送る対応
  にして、うまくいきました。
  で、結論…
  MT3.33では、「UTF-8」以外の文字コードは、使わない方が無難です


5.謝辞
  最後に、今回の「文字化け対応」で、特にお世話になった方。

  【ジャスタウェイの日記☆】のジャスタウェイさん。
  “先人の教え”を参考にしても、うまくいくかどうかは実際に
  送ってみないと分かりません。
  ジャスタウェイさんの『文字化けはお気になさらずに』の言葉は、
  (精神的に)とても助かりました。

  おかげで、早期に解決することができました。
  ありがとうございます。

投稿者 nasake : 2008年04月06日 08:18

トラックバック

このエントリーのトラックバックURL:
http://hoshinoumi-nasake.com/mt-tb.cgi/279

《TBについて》
 ・TB歓迎です。
 ・記事に、当サイトへのリンク(言及リンク)は必要ありません。
 ・送ったのに、すぐに表示されない:
  → 時々、「管理人の承認待ち」状態になってしまうことがあります。
    発見次第、表示させますので、暫くお待ち下さい。
 ・文字化けする:
  → 発見次第、修正して表示させますので、暫くお待ち下さい。

コメント (新着順に表示されます)

ジャスタウェイさん、コメントありがとうございます。

すみません、意味不明な説明を長々としてしまって…

ジャスタウェイさんに、一言伝えようかとも考えたのですが、
「お礼を書いたから見てください」と言うのも変だと思ったので、
伝えていませんでした。

本人に伝わって、良かったです。

投稿者 nasake : 2008年04月10日 23:16

nasakeさん、こんばんは。
何となく読んでいたら名前があったのでビックリしました☆
“先人の教え”をもってしても解決は困難だったのですね(汗
やっぱり解決の過程を見ても内容はさっぱりデス…お疲れ様でした!

投稿者 ジャスタウェイ : 2008年04月10日 22:27

コメントがあれば、お願いします




保存しますか?