このエントリは内容が古いです。
最新の日本語化パッチを使用するか、こちらのエントリを参考にしてください。
日本語化パッチを適用した人は、こちらの文字化け対策を行う必要はありません。
MovableTypeで日本語を使用するには、Shift_JISやEUC-JPもしくはUTF-8で動作させることが必要になるわけで、どの文字コードが一番よく使われているのかはわかりませんが、ここで配布されているJapanese Language Packを使用している人はたいていEUC-JPを使用していると思われますし、実際ワタシもEUC-JPを使ってます。
で、別に管理画面とかが英語でも構わないとか言う人はJapanese Language Packを使用しないわけで、そんな人はShift_JISを使用している可能性もあるわけです。
さて、MovableTypeにはTrackBackという機能がありまして、ワタシはこの機能をどんな時に使うものかわかっていなかったりしていますが、とにかくそんな機能があります。
先にも述べたとおり、日本のMovableType界には3種類の文字コードで動作しているMovableTypeがそれぞれ存在しているわけで、Shift_JISのサイトからEUC-JPのサイトにTrackBackしたり、EUC-JPのサイトからUTF-8のサイトにTrackBackしたりすると文字化けが発生してしまうわけです。
その文字化けを強引に解消する方法を考えました。
ワタシがEUC-JPなので、EUC-JPでの対処法を書きます。(Version2.51向け)
- mt.cgiが存在する場所から見て、
./lib/MT/App/TrackBack.pmを開きます。
- 最新の2.51だと53行目からの「no_utf8」というサブルーチンを以下のように書き換えます。
Jcode.pmがインストールされている場合
sub no_utf8 {
require Jcode;
for (@_) {
next if !defined $_;
$_ = pack 'C0A*', $_;
$_ = Jcode->new($_)->euc;
}
}Jcode.pmがインストールされていない場合(UTF-8からのTrackBackには対応できません)
sub no_utf8 {
require 'jcode.pl';
for (@_) {
next if !defined $_;
$_ = pack 'C0A*', $_;
$_ = jcode::euc($_);
}
}
- Jcode.pmがインストールされていない場合、mt.cgiのあるディレクトリに、jcode.plをアップロードしておきます。
これで、EUC-JP以外の文字コードでTrackBackのデータが送られてきても、EUC-JPに変換してくれるはずです。
なんでもいいので、自分のサイトのTrackBack受け入れのURL(たとえばウチならhttp://rebecca.ac/cgi-bin/mt/mt-tb.cgi/3 とか)にブラウザで直接アクセスしてみましょう。
そこで、
Need a Source URL (url).
とか出てきたらたぶんうまくいきます。
An error occurred:
とか出てきたら何かが間違っています。
なお、jcode.plはUTF-8には対応していないので、なるべくならJcode.pmを使用することをオススメします。
ついでなので、Jcode.pmのインストール方法も書いておきます。
- http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Jcode-0.82.tar.gzから現在の最新版0.82をダウンロード
- 解凍
- 出来たファイルのうち、Jcode.pmというファイルとJcodeというディレクトリを
./lib/ か ./extlib/ どちらかにアップロード
- 以上でインストール完了
Shift_JISやUTF-8の人もこれを参考にすれば治せるでしょう。
俺はShift_JISなんだけど参考にしてもわからねーよ、と言う方がいたらコメントくださいませ。
ただ、ワタシはインチキプログラマなので、もっと良い解決策を提示できる人がいたら、よろこんでそちらに乗り換えます。
一番いいのは、MovableType自体に文字コード対策が施されることでしょう。
※十分検証したわけではないので、不具合が出るかもしれません。ということで、検証したいので、文字コード問わずだれかこの記事にTrackBackしてください。
※上記の改造を行ったが故に問題が発生しても責任は負いかねます。申し訳ありませんが、改造は自己責任でお願いします。


Comments (20)
TrackBackを辿ってきました。ちょっと気にはなっていたのですが、そんなに使う人もいないし、でも、なんとかしたいな、と思っていたところでした。早速こちらでも試してみます。
投稿者: hirata | 2002年11月27日 18:17
Posted on: 2002年11月27日 18:17
はじめまして。私も最近 Movable Type を設置したばかりで TrackBack を使ったこともありませんが(笑)、文字コードについては日本語で Movable Type を使う上で大きな問題だと思いますので、私のサイト(UTF-8)でも追試してみます。
投稿者: akihiro | 2002年11月28日 01:33
Posted on: 2002年11月28日 01:33
はじめまして。Jcode.pmが標準で入っていないプロバイダを使っているので、jcode.plのほうで試してみたいと思います。Jcode.pmってサーバにファイルをコピーしておくだけでも動くんでしたっけ。
他にBookmarkletも文字コード問題を抱えていて、こちらもUTF-8対応が必要なようなので、参考にさせていただきます。
投稿者: noir | 2002年11月28日 08:57
Posted on: 2002年11月28日 08:57
TrackBack ですが、うちでは上手くいきました。Bookmarklet はうち(UTF-8)では動いています。
投稿者: hirata | 2002年11月28日 09:59
Posted on: 2002年11月28日 09:59
こんにちは。
うちはShift_JISで動かしていますが、こちらへのTrackbackはきちんと入ったようです。ただ、一度アップしたものを編集してプレビューしてから保存すると再度Trackbackを送ってしまうようですが(重なった部分は消しておいていただいて結構です。)これは2.5のバグのようですので2.51にすれば解決する?らしいですが。
投稿者: kengo | 2002年11月28日 11:33
Posted on: 2002年11月28日 11:33
Jcode.pmだけをサーバーに置くのではなく、
http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Jcode-0.82.tar.gz
からダウンロードして、解凍して出来たファイル群のうち、Jcode.pmとJcodeディレクトリ以下全部をextlibかlibにアップロードする必要があります。
投稿者: milano | 2002年11月28日 12:49
Posted on: 2002年11月28日 12:49
お陰様で、正しく設定できたようです。私のヘボサイトに文字コードの違うサイトから TrackBack がかかることがありましたら、あらためて結果を報告します(笑)。ありがとうございました。
投稿者: Akihiro | 2002年11月28日 14:32
Posted on: 2002年11月28日 14:32
ありがとうございます。Jcode.pm 入れてみました。
ですが、こちらに ping を送ろうとすると私のサイトのほうが 500 Internal Server Error に…。文字化け対策に関係なく、そもそも TrackBack がうまく動いてくれていなかったようです。ううむ。
投稿者: noir | 2002年11月28日 16:42
Posted on: 2002年11月28日 16:42
うちの TrackBack おかしいかも、と思って、
TrackBack Ping Format を手がかりにテストしてます。
それで気がついたんですが、mt-tb.cgi の出力の encoding が iso-8859-1, language が en-us になっていました。このへんについても、lib/MT/App/Trackback.pm に修正する必要がありますね。
投稿者: noir | 2002年11月28日 17:00
Posted on: 2002年11月28日 17:00
Trackbackありがとうございます。
うまくいきましたね。
これで EUC-Shift_JIS間の文字化けは解消しましたね。
Bookmarkletの記事もあがってたのでそれも
今設定して試したところOKでした。
投稿者: kengo | 2002年11月28日 17:11
Posted on: 2002年11月28日 17:11
TrackBack Ping Formatはどこでわかりますか?
ソースを一生懸命追いかければわかりそうですが、そんな気力は無かったのでやってません。
で、noirさんの指摘された所も修正するとすると、
- <?xml version="1.0" encoding="iso-8859-1"?>
+ <?xml version="1.0" encoding="EUC-JP"?>
- <?language>en-us<?/language>
+ <?language>ja<?/language>
と言う感じでしょうか。
投稿者: milano | 2002年11月28日 17:16
Posted on: 2002年11月28日 17:16
あ、フォーマット発見!
http://rebecca.ac/milano/mts/docs/mtmanual_trackback.html#trackback%20ping%20format
投稿者: milano | 2002年11月28日 18:12
Posted on: 2002年11月28日 18:12
みらのさん、トラックバックのテストありがとうございました。
おかげさまでエラーも文字化けもなく、無事に動作することが確認できました。
感謝の嵐です。
投稿者: トミナガ | 2003年01月22日 02:20
Posted on: 2003年01月22日 02:20
はじめまして、森山と申します。
LAN 内の Linux マシンに Movable Type をインストールして、いろいろいじっ
ています。
TrackBack の文字化け対策についてですが、POST 時の Content-Type を次のよ
うにして charset 指定する方法を試してみました。
application/x-www-form-urlencoded; charset=Shift_JIS
受ける側では、charset 指定がない場合には、従来どおり、Jcode で文字コー
ド判定して変換するようにして、charset 指定がある場合は、この指定に従う
という事をすれば、文字化けの危険性を低く出来てよいのではないかと考えて
いますが、いかがでしょう?
投稿者: 森山 将之 | 2003年08月04日 23:03
Posted on: 2003年08月04日 23:03
>森山さん
遅レスで失礼です。
Trackbackの文字化け対策は、色々アイデアは浮かぶのですが、ワタシだけが実装しても駄目で、Movable Typeを使っている人全てだけでなく、Trackbackを実装している全てのアプリケーションが対応しなくては意味無いですからねぇ。
一応、ワタシからは
http://rebecca.ac/milano/mt/archives/000199.html
というような方式を提唱しているのですが、他のツールの実装状況がわからないので、これが正しい事なのかどうか。
投稿者: milano | 2003年08月15日 15:09
Posted on: 2003年08月15日 15:09
milano さん、ご返事ありがとうございます。
TrackBack 機能に限らず、POST メソッドのエンコード指定方法が明確になり、
それが普及してほしいですね。
投稿者: 森山 将之 | 2003年08月17日 14:11
Posted on: 2003年08月17日 14:11
みらのさん、こんばんは。
夕方TBを間違って2重に送ってしまいました。
お手数ですが、お時間ある時に、一つ削除して下さいますか?
他の方から教えて頂いた、
みらのさん製作の「Free TrackBack」とてもイイですね。
これからも活用させていただきます。
投稿者: yoko | 2003年09月02日 02:39
Posted on: 2003年09月02日 02:39
初めまして!早速ですが、文字化け対策!まず、右クリックします。そしたら。エンコードというのがあります。それの上から2番目の、日本語自動選択をクリック!すると、ほとんどの文字化けはなおるとおもいます!
投稿者: おす | 2003年09月12日 15:21
Posted on: 2003年09月12日 15:21
凄く便利な記事、ありがとうございます。
早速、実行。TBいたしました。
(TBしたはずなのですが、ちゃんと出来ていないような・・・)
sjisと書くべきものをshift_jisと最初に書いて、
エラーを始め出してしまいました。
でも、Jcode.pmを見れば書いてありました(汗)
投稿者: Noel | 2004年07月06日 22:18
Posted on: 2004年07月06日 22:18
続けての投稿ごめんなさい。
TB二重でしてました。
お手数ですが、片方削除をお願いします。
投稿者: Noel | 2004年07月06日 22:19
Posted on: 2004年07月06日 22:19