トラックバックが文字化けする

/ php

php で書いたトラックバック受信用のプログラムが、ping リクエストの内容を文字化けして吐き出すようになった。別サーバではバッチリ動いているのに、なぜ。

$charset = $_POST['charset'];
if (empty($charset)) {
    $charset = "utf-8";
}
$excerpt = mb_convert_encoding($_POST['excerpt'], "euc-jp", $charset);

リクエストに charset の指定が無い場合は、デフォルトで「utf-8」を使用することにしていたのだけれど、どうもこれがいけないらしい。この処理を省いたら、文字化けしなくなった。

それでも別サーバでは正常稼動していたのだ。どうも釈然としないなあ。

情報筋からのヒントで php.ini を調べたら、原因が判明した。犯人は、mbstring.http_input の設定内容。以下みたいな設定になってましたよ。あー。

mbstring.http_input = auto

auto の設定によってすでにエンコード済みの文字列を、改めて utf-8 として解釈し、euc-jp に変換しようとしていた。そりゃあ、文字化けもしますわ。auto はあまり信頼できないので、この設定をコメントアウトして、本当に解決!

お疲れさまでした。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/362