WEB開発備忘録

PHPのmbstring設定で文字化けを防ぐ / 「mbstring.http_input = pass」

PHP5.4以降では、これまでのmbstringの設定では、日本語で文字化けが発生するようになりました。
mbstringの設定を調整することで解決しましたのでメモ。

mbstring.http_input」を「pass」に設定しました。

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 0

mbstring.http_inputはhttp通信時の、つまりWEBからの入力データの文字コード指定です。
pass」は「そのまま変換無しに受け取りますよ」という指定です。
自動変換が文字化けを引き起こしていたのでした。

※ mbstring.encoding_translationをoffにするのはあまりお勧めできません。アップロードされたファイル名の文字コードの扱いにも影響する値です。内部エンコードに変換して処理した方が無難です。