PHPには、内部エンコードという設定(mbstring.internal_encoding)があって、php.ini で指定する。
共用レンタルサーバーなどでは、php.ini 直接いじることができない場合もあるので、その場合は、スクリプト中または、.htaccess 内で指定すると、php.ini の設定を変更できる。
MLog: [PHP-users 32797]script_encodingとinternal_encodingの違い (was Re: Re: 半角カタカナのファイルを require するとエラー)たとえば、mb_convert_encoding()の第三引数のデフォルトとして
使われるものです。
上記ページが参考になりました。
現在、オープンソースのシステムを改良・拡張中で、この内部エンコードと出力コードが違って、時折バグが出るという問題に凄い時間、頭を悩ませました。
以下の.htaccess を設置して問題解決。
php_value mbstring.language Japanese php_flag mbstring.encoding_translation On php_value mbstring.script_encoding UTF-8 php_value mbstring.internal_encoding UTF-8
php_value mbstring.script_encoding UTF-8 で、スクリプトソースの文字コードも、UTF-8に指定する。
あとで、phpinfo を確認したところ、php_value mbstring.script_encoding 、 php_value mbstring.internal_encoding において、Master Value の値が、「no value」となっていました。
サーバーが変わると、php.ini の設定が変わってPHPが動かないのは、けっこう気づきにくいかもしれないので、覚書でした。
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/448