日本語で PHP スクリプトを記述する場合は、使用環境に応じた文字セットを設定しないと文字化けを起こします。
文字セットは、以下の各ファイルで設定可能です。
- ・httpd.conf
-
サーバ管理者だけが設定可能。
汎用性を持たせるためには、バーチャルホストでの設定が望ましい。 - ・php.ini
-
サーバ管理者または許可されたサイト管理者が設定可能。
PHP の特性上、可能ならここでの設定が一番望ましいです。 - ・php スクリプト
-
サイト管理者(スクリプト作成者)が設定可能。
汎用性は最も高い。 - ・.htaccess
-
サイト管理者が設定可能
(.htaccess の設置が許可されている必要があります)。
最も簡易でなおかつ強力な設定方法ですが、サーバによってはコマンドが制限されていたりして、汎用性は低くなります。
*注
JIS, Shift_JIS, ISO-2022-JP, BIG-5 で書かれた PHP スクリプトは、動作しない可能性があります。
文字エンコーディングの問題点について精通していない限り、内部エンコーディングとして使用するべきではありません。 UTF-8 もしくは EUC-JP を推奨します。
*注
MySQL は、 4.1 から内部処理コードが UTF-8 に変わっています。
PHP でデータベースを操作する場合は、データベースで使用する文字セットに PHP の内部エンコーディングを一致させたほうが、より効率的です。
MySQL を導入する予定がある場合は、すべての文字コードを UTF-8 に統一することを推奨します。
*注
mbstring(日本語などのマルチバイトストリング関数)を使用するには、php.ini の拡張機能で "extension=php_mbstring.dll" が有効になっていなければなりません。
参照:
PHP5.1.1 のインストールと設定 - php.ini の設定
関数の説明
| 名称 | 説明 | 初期値 | 変更の可否 | 対応 |
|---|---|---|---|---|
| default_charset | デフォルトの文字セット | '' | PHP_INI_ALL | |
| output_buffering | 出力バッファリングの有効・無効 | '0' | PHP_INI_PERDIR | |
| output_handler | 出力変換の有効・無効 | NULL | PHP_INI_PERDIR | php >= 4.0.4 |
| mbstring.language | デフォルトの言語 | 'neutral'(utf-8) | PHP_INI_PERDIR | php >= 4.3.0 |
| mbstring.encoding_translation | 内部文字エンコーディングの有効・無効 | '0' | PHP_INI_PERDIR | php >= 4.3.0 |
| mbstring.http_input | HTTP入力文字エンコーディング | 'pass' | PHP_INI_ALL | php >= 4.0.6 |
| mbstring.http_output | HTTP出力文字エンコーディング | 'pass' | PHP_INI_ALL | php >= 4.0.6 |
| mbstring.internal_encoding |
内部文字エンコーディング *注 mbstring.languageの下位に書く必要があります。 |
NULL | PHP_INI_ALL | php >= 4.0.6 |
| mbstring.substitute_character | 無効な文字の代替出力の有効・無効 | NULL | PHP_INI_ALL | php >= 4.0.6 |
| 定数 | 意味 |
|---|---|
| PHP_INI_PERDIR | php.ini, .htaccess または httpd.confで設定可能なエントリ |
| PHP_INI_ALL | どこでも設定可能なエントリ |
以下のいずれかひとつの方法で設定します。
