dT*blog

design and programming

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

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 はあまり信頼できないので、この設定をコメントアウトして、本当に解決!

お疲れさまでした。

Posted by dT by 01:47

トラックバック

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

コメント




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31