encoding_translationはやっかいだ
クライアントから文字コードUTF-8でメールフォームのページを作ってくれ、と言うことでPHPでざくっと制作。
セキュリティ上こちらはサーバにアクセスできないので、ファイルをあずけてアップロード~テストはクライアントに確認してもらい、OKが出たのでひとまずそのまま公開。
ところがしばらくして、日本語を送信すると文字化けするとのお知らせが入る。
まあmbstring系の問題だろう、とphp.iniの設定を依頼してもらったところこんな設定になっていましたと。
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
PHPのマニュアルにも同じような設定が載っているので、おそらくそれに合わせたんじゃないかと思われますが、、
これではencoding_translationでパラメータがEUCに自動変換されちゃって、UTF-8を想定して書かれたコードでは化けるわけです。
コードの記述を制限してしまうencoding_translationなんて効かしておく必要ありますかね?
自動変換されるより、自分で文字コード意識しながら書いたほうがよっぽど分かりやすい。
結局、.htaccessを追加で上げてもらって、とりあえず文字化けは解決しました。
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation Off
- PEAR::HTTP_Requestでタイムアウト時間を指定する - 2008年8月23日
- Amazonランキングのカテゴリー切り替え - 2008年3月06日
- オープンソースカンファレンス2008に行ってきました - 2008年3月02日
- PHPからGoogle翻訳を使ってみる - 2008年2月22日
- XREAでCodeIgniterにPostgreSQL接続 - 2007年12月01日
トラックバック(0)
このブログ記事を参照しているブログ一覧: encoding_translationはやっかいだ
このブログ記事に対するトラックバックURL: http://blog.knockoutmarch.com/mt3/mt-tb.cgi/81


コメントする