内部文字エンコーディングはphp.iniのmbstring.internal_encodingで指定する。
また、スクリプト内ではmb_internal_encoding()で設定・取得ができる。
この内部文字エンコーディングは何に使われるのか、というと次の3つである。
- HTTP入力文字エンコーディング変換
- HTTP出力文字エンコーディング変換
- マルチバイト文字列(mbstring)関数においてデフォルトの文字エンコーディング
ちなみに、PHPスクリプトの文字コードは「mbstring.script_encoding」で指定する。
HTTP入力文字エンコーディング変換
php.iniのmbstring.encoding_translationの値が「On」の場合、
HTTP入力文字エンコーディングが自動的に内部文字エンコーディングに変換される。
mbstring.encoding_translationの値が「Off」の場合は、何もしない。
HTTP出力文字エンコーディング変換
mb_output_handler()は、内部文字エンコーディングからHTTP出力文字エンコーディングに変換する。
マルチバイト文字列(mbstring)関数においてデフォルトの文字エンコーディング
マルチバイト文字列(mbstring)関数のうち、文字エンコーディングが必要な一部の関数では、
文字エンコーディングを指定しない場合は内部文字エンコーディングが指定されたことになる。
毎回、文字エンコーディングを指定する手間が省ける。