2008年03月28日
Movable Type でトラックバックが見事に文字化け
Movable Type のトラックバックの文字化けでとてつもなく困ってます。
トラックバックを送ると、必ずトラックバック先のブログさんで
文字化けして表示されてて、不思議に思ってました。
『ありゃりゃ、俺、なんか悪いしたかね?』
って。
気になってトラックバックを送信されたら
『OKっす』と返事だけ返す CGI を作りました。
この CGI、送信されたデータを別ファイルに保存します。
その保存されたデータを見て調べるのです。
んでこれがその CGI の中身。
んで、保存されたデータにナニが入ってるのかな〜と
見てみますと、これがまた驚愕のデータ。
セキュリティ上の問題と18禁な問題もありますので
キモだけ抜き出して書きます。
驚きました。
blog_name から最後の excerpt まで、
URL エンコードという方法で英数字に変換されなきゃならんのです。
しかし URL エンコードがかまされていないのです。
思いっきり日本語で書きまくっています。
これじゃ化けますよ。
Movable Type の CGI の方でちゃんと変換かけてないのかなって思って
lib/MT.pm やらみたんですが、ちゃんと変換するようにしてるみたい。
lib/Util.pm に encode_url というメソッドがあって
それを MT.pm が呼び出してるけど、URL encode が上手くいってない。
モジュール呼び出し自体に失敗してるならエラーが出るだろうし。
うーむ、lib/ で次のようなサンプル作って試したけど、
これは上手くいくってのが不思議遊戯。
これを実行すると、ちゃんと URL encode されてました。
わからん!
トラックバックが文字化けしたりする原因はちょっと分かったけれど
なぜ URL encode が失敗するのかがわからん!
うちのサーバ特有現象でないことを祈る!
あ、ちなみにうちでは Movable Type では UTF-8 使ってます。
バージョンは 4.1 です。
以下のブログさんなどでお勉強しましたが
ちょっと前の Movable Type の話であって、ちょっと違うのかな?
トラックバックが文字化けをおこしてしまうじゃないかの巻 ユキノヒノシマウマ
Trackbackの文字コード指定方法最終(予定) Milano::Monolog
Exciteブログでトラックバックが文字化け解決策 GIFアニメ工房
トラックバックの文字化け対策 お気楽アドミン
トラックバックの文字化け解消。 NOBODY:PLACE
文字化けして表示されてて、不思議に思ってました。
『ありゃりゃ、俺、なんか悪いしたかね?』
って。
気になってトラックバックを送信されたら
『OKっす』と返事だけ返す CGI を作りました。
この CGI、送信されたデータを別ファイルに保存します。
その保存されたデータを見て調べるのです。
んでこれがその CGI の中身。
require "cgi"
ps = CGI.new
File::open("data.txt", "w") { |f|
ENV.each { |key,value|
f.puts key + ":\t" + value
}
f.puts
ps.params.each { |key,value|
f.puts key + ":\t" + value.to_s
}
f.puts
}
print "Content-type: text/xml\n\n"
print '<?xml version="1.0"encoding="iso-8859-1"?>'
print "<response>"
print "<error>0</error>"
print "</response>"
んで、保存されたデータにナニが入ってるのかな〜と
見てみますと、これがまた驚愕のデータ。
セキュリティ上の問題と18禁な問題もありますので
キモだけ抜き出して書きます。
CONTENT_TYPE: application/x-www-form-urlencoded; charset=UTF-8
blog_name: ほぼ日刊エロリチェック
title: モンスターハンターのドリンク剤の甘い誘惑(平成20年3月27日分)
url: http://eloli.info/2008/03/2027_2.html
excerpt: 全身がけだるい感じに包まれております。 何もやりたくな...
驚きました。
blog_name から最後の excerpt まで、
URL エンコードという方法で英数字に変換されなきゃならんのです。
しかし URL エンコードがかまされていないのです。
思いっきり日本語で書きまくっています。
これじゃ化けますよ。
Movable Type の CGI の方でちゃんと変換かけてないのかなって思って
lib/MT.pm やらみたんですが、ちゃんと変換するようにしてるみたい。
lib/Util.pm に encode_url というメソッドがあって
それを MT.pm が呼び出してるけど、URL encode が上手くいってない。
モジュール呼び出し自体に失敗してるならエラーが出るだろうし。
うーむ、lib/ で次のようなサンプル作って試したけど、
これは上手くいくってのが不思議遊戯。
use MT::Util qw( encode_url );
$str = <STDIN>;
print encode_url( $str ) . "\n";
1;
これを実行すると、ちゃんと URL encode されてました。
わからん!
トラックバックが文字化けしたりする原因はちょっと分かったけれど
なぜ URL encode が失敗するのかがわからん!
うちのサーバ特有現象でないことを祈る!
あ、ちなみにうちでは Movable Type では UTF-8 使ってます。
バージョンは 4.1 です。
以下のブログさんなどでお勉強しましたが
ちょっと前の Movable Type の話であって、ちょっと違うのかな?
トラックバックが文字化けをおこしてしまうじゃないかの巻 ユキノヒノシマウマ
Trackbackの文字コード指定方法最終(予定) Milano::Monolog
Exciteブログでトラックバックが文字化け解決策 GIFアニメ工房
トラックバックの文字化け対策 お気楽アドミン
トラックバックの文字化け解消。 NOBODY:PLACE
Movable Type でトラックバックが見事に文字化け | 12:41│コメント(0)│トラックバック(0)
Movable Type でトラックバックが見事に文字化けへのトラックバックURL
http://trackback.blogsys.jp/livedoor/uradiet/51074782



