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

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

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


日時: 2008年12月09日 09:59
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/448

この記事にトラックバックされる方は、参照先が分かるようにするために、「PHPの内部エンコードと出力文字コード、スクリプト文字コード」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - ウェブライフハック