IIS5.0上でZend Frameworkを動かした時に問題が起こったのでメモ。

サイト全面UTF-8なのに、GET送信したパラメータがPHP内で取得するとSJISになっている。
php.iniの設定も散々確認したが、直らない。

調べてたら見つかりました。
何かIISが$_SERVERで取得出来る値を勝手にSJISに変換している模様。。やめてくれと。

Zend Frameworkでは$_SERVERからGETの値を取得しているのか、もろに影響を喰らっちゃったわけですな。

相当キモチワルイが、下記をエントリポイントの頭に記述したら一応解決した。

// IISが勝手にSJISに変換するので戻す
$keys = array('ORIG_PATH_INFO', 'ORIG_PATH_TRANSLATED', 'PATH_INFO', 'PATH_TRANSLATED', 'REQUEST_URI', 'URL');
foreach ($keys as $key) {
    $_SERVER[$key] = mb_convert_encoding($_SERVER[$key], 'UTF-8', 'auto');
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*