沖縄が日本のシリコンバレーのようになってほしいと願うiOSエンジニアのブログ

世のエンジニアの役に立つようなブログにしたいなぁ

PHP.ini文字コード設定の意味

#////////////////////////////////////////////
php_value output_handler mb_output_handler
php_value default_charset Shift_JIS
php_value mbstring.language Japanese
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.substitute_character none
#////////////////////////////////////////////

この設定で意味する事は、PHPのソースはEUC-JPなので、internal_encodingを
EUC-JPとし、言語のベースは日本語なのでmbstring.languageはJapaneseとする。

HTTPのデータ入出力の際、
サーバー側に入ってくる時(mbstring.http_input)はデータに一切処理を施し
てほしくないのでpassとし、output_handlerで設定しているmb_output_handler
の処理をスルーするようにします。
※mb_output_handlerはPHPの組み込み関数です。

反対にサーバーからクライアント側にでるデータはoutput_handlerで設定してい
るmb_output_handlerにSJIS(Shift-JIS)に変換してほしいので、mbstring.http_ou
tput
SJISと設定します。

最終的にdefault_charsetをShift_JISとし、ヘッダー情報として
default_charset Shift_JIS
PHPに自動的に設定してもらうようにします。

参考:
http://www.php.net/manual/ja/ref.mbstring.php