php.ini が
ちなみに、languageの設定さえない場合は、ISO-8859-1のようだ。
時代は、UTF-8だと思いますので、UTF-8でソースコードを書く時には、
よって、日本語のコードであれば、必ず初期設定スクリプトで、
mbstring.language = Japaneseであり、かつ、mbstring.internal_encodingが未設定の場合、PHPは、mbstring.internal_encodingが、文字コードEUC-JPであるとみなして動作する。*1
ちなみに、languageの設定さえない場合は、ISO-8859-1のようだ。
時代は、UTF-8だと思いますので、UTF-8でソースコードを書く時には、
mbstring.internal_encoding = UTF-8を忘れずに。
可搬性を重視した場合
他の環境でも動作させることを考えれば、これらの項目は、php.iniで設定するのでなく、自分のスクリプトの初期設定で行うほうがよい。だって、レンタルサーバーであれば、languageの設定がjapaneseと保証されているわけでもないし、文字コードもphp.iniでどう設定されているかは、千差万別(のはず)だからだ。よって、日本語のコードであれば、必ず初期設定スクリプトで、
mb_language( 'ja' );を設定しましょう。
mb_internal_encoding( 'UTF-8' );
なぜ今?
何を当たり前のことをお思いでしょうけど、mbstring.internal_encodingを未設定、またはEUC-JPのままで、UTF-8でコードを書くと思わぬ誤動作が生まれる可能性がある、ということで。。。。次回に続く。*1 : PHP5.2.4 PHP_RINIT_FUNCTION mbstring-mbstring.c