「頂いた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.謝辞
最後に、今回の「文字化け対応」で、特にお世話になった方。
【
ジャスタウェイの日記☆】のジャスタウェイさん。
“
先人の教え”を参考にしても、うまくいくかどうかは実際に
送ってみないと分かりません。
ジャスタウェイさんの『文字化けはお気になさらずに』の言葉は、
(精神的に)とても助かりました。
おかげで、早期に解決することができました。
ありがとうございます。