PHPの内部エンコードと出力文字コード、スクリプト文字コード

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

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が動かないのは、けっこう気づきにくいかもしれないので、覚書でした。

スポンサーリンク
 
スポンサーリンク