このエントリは内容が古いです。
最新の日本語化パッチを使用するか、こちらのエントリを参考にしてください。
日本語化パッチを適用した人は、こちらの文字化け対策を行う必要はありません。
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をアップロードしておきます。
なんでもいいので、自分のサイトの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なんだけど参考にしてもわからねーよ、と言う方がいたらコメントくださいませ。
ただ、ワタシはインチキプログラマなので、もっと良い解決策を提示できる人がいたら、よろこんでそちらに乗り換えます。
一番いいのは、MovableType自体に文字コード対策が施されることでしょう。
※十分検証したわけではないので、不具合が出るかもしれません。ということで、検証したいので、文字コード問わずだれかこの記事にTrackBackしてください。
※上記の改造を行ったが故に問題が発生しても責任は負いかねます。申し訳ありませんが、改造は自己責任でお願いします。
hirata
TrackBackを辿ってきました。ちょっと気にはなっていたのですが、そんなに使う人もいないし、でも、なんとかしたいな、と思っていたところでした。早速こちらでも試してみます。
akihiro
はじめまして。私も最近 Movable Type を設置したばかりで TrackBack を使ったこともありませんが(笑)、文字コードについては日本語で Movable Type を使う上で大きな問題だと思いますので、私のサイト(UTF-8)でも追試してみます。
noir
はじめまして。Jcode.pmが標準で入っていないプロバイダを使っているので、jcode.plのほうで試してみたいと思います。Jcode.pmってサーバにファイルをコピーしておくだけでも動くんでしたっけ。
他にBookmarkletも文字コード問題を抱えていて、こちらもUTF-8対応が必要なようなので、参考にさせていただきます。
hirata
TrackBack ですが、うちでは上手くいきました。Bookmarklet はうち(UTF-8)では動いています。
kengo
こんにちは。
うちはShift_JISで動かしていますが、こちらへのTrackbackはきちんと入ったようです。ただ、一度アップしたものを編集してプレビューしてから保存すると再度Trackbackを送ってしまうようですが(重なった部分は消しておいていただいて結構です。)これは2.5のバグのようですので2.51にすれば解決する?らしいですが。
milano
Jcode.pmだけをサーバーに置くのではなく、
http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Jcode-0.82.tar.gz
からダウンロードして、解凍して出来たファイル群のうち、Jcode.pmとJcodeディレクトリ以下全部をextlibかlibにアップロードする必要があります。
Akihiro
お陰様で、正しく設定できたようです。私のヘボサイトに文字コードの違うサイトから TrackBack がかかることがありましたら、あらためて結果を報告します(笑)。ありがとうございました。
noir
ありがとうございます。Jcode.pm 入れてみました。
ですが、こちらに ping を送ろうとすると私のサイトのほうが 500 Internal Server Error に…。文字化け対策に関係なく、そもそも TrackBack がうまく動いてくれていなかったようです。ううむ。
noir
うちの TrackBack おかしいかも、と思って、
TrackBack Ping Format を手がかりにテストしてます。
それで気がついたんですが、mt-tb.cgi の出力の encoding が iso-8859-1, language が en-us になっていました。このへんについても、lib/MT/App/Trackback.pm に修正する必要がありますね。
kengo
Trackbackありがとうございます。
うまくいきましたね。
これで EUC-Shift_JIS間の文字化けは解消しましたね。
Bookmarkletの記事もあがってたのでそれも
今設定して試したところOKでした。
milano
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
あ、フォーマット発見!
http://rebecca.ac/milano/mts/docs/mtmanual_trackback.html#trackback%20ping%20format
トミナガ
みらのさん、トラックバックのテストありがとうございました。
おかげさまでエラーも文字化けもなく、無事に動作することが確認できました。
感謝の嵐です。
森山 将之
はじめまして、森山と申します。
LAN 内の Linux マシンに Movable Type をインストールして、いろいろいじっ
ています。
TrackBack の文字化け対策についてですが、POST 時の Content-Type を次のよ
うにして charset 指定する方法を試してみました。
application/x-www-form-urlencoded; charset=Shift_JIS
受ける側では、charset 指定がない場合には、従来どおり、Jcode で文字コー
ド判定して変換するようにして、charset 指定がある場合は、この指定に従う
という事をすれば、文字化けの危険性を低く出来てよいのではないかと考えて
いますが、いかがでしょう?
milano
>森山さん
遅レスで失礼です。
Trackbackの文字化け対策は、色々アイデアは浮かぶのですが、ワタシだけが実装しても駄目で、Movable Typeを使っている人全てだけでなく、Trackbackを実装している全てのアプリケーションが対応しなくては意味無いですからねぇ。
一応、ワタシからは
http://rebecca.ac/milano/mt/archives/000199.html
というような方式を提唱しているのですが、他のツールの実装状況がわからないので、これが正しい事なのかどうか。
森山 将之
milano さん、ご返事ありがとうございます。
TrackBack 機能に限らず、POST メソッドのエンコード指定方法が明確になり、
それが普及してほしいですね。
yoko
みらのさん、こんばんは。
夕方TBを間違って2重に送ってしまいました。
お手数ですが、お時間ある時に、一つ削除して下さいますか?
他の方から教えて頂いた、
みらのさん製作の「Free TrackBack」とてもイイですね。
これからも活用させていただきます。
おす
初めまして!早速ですが、文字化け対策!まず、右クリックします。そしたら。エンコードというのがあります。それの上から2番目の、日本語自動選択をクリック!すると、ほとんどの文字化けはなおるとおもいます!
Noel
凄く便利な記事、ありがとうございます。
早速、実行。TBいたしました。
(TBしたはずなのですが、ちゃんと出来ていないような・・・)
sjisと書くべきものをshift_jisと最初に書いて、
エラーを始め出してしまいました。
でも、Jcode.pmを見れば書いてありました(汗)
Noel
続けての投稿ごめんなさい。
TB二重でしてました。
お手数ですが、片方削除をお願いします。
Local And Long Distance
this towing service was very reliable and helpful. They were on time and satified all my needs. They towed my car from plano to frisco and i was happy. Driver had good communication skills and i had my car treated well. thank you guys and you will hear from me again.