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
- 3キャリア別にフォーム入力モードを切り替えるカスタムヘルパー - 2009年4月03日
- オブジェクトのシリアル化についてのメモ - 2009年3月12日
- askeet 4日目 - 2009年2月24日
- symfonyでPDO接続をする - 2009年2月18日
- PEAR::HTTP_Requestでタイムアウト時間を指定する - 2008年8月23日
トラックバック(0)
このブログ記事を参照しているブログ一覧: encoding_translationはやっかいだ
このブログ記事に対するトラックバックURL: http://blog.knockoutmarch.com/mt3/mt-tb.cgi/81
コメントする