php.iniの文字コードまわりのおさらい

default_charset

  • HTTP header 文字コード
  • 出力時にHTTPヘッダとして送信する文字コード名のこと.
  • Content-Typeが固定されるため,default_charsetはnoneを指定してhtmlのmeta charasetで文字コードを指定するのがよさげ
1
php_value default_charset none
1
php_value default_charset utf-8

internal_encoding

  • 内部文字エンコーディング
  • internal_encodingはmbstring関数のデフォルトエンコードのこと.
  • mb_convert_kanaなどで変換元文字コードの指定がない場合に使用される.
  • 変換元文字コードを固定にするため,
  • internal_encodingはソースコードの文字コードと揃えておくと良い.
1
mbstring.internal_encoding = UTF-8

mbstring.detect_order

  • 文字コードの自動検出の優先順位
  • 規定値:auto
  • auto は “ASCII,JIS,UTF-8,EUC-JP,SJIS”の順
  • 精度がそんなによくないのでなるべくautoにしないで明示的に設定したほうがよさげ
1
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

mbstring.encoding_translation

  • POSTデータの変数が内部文字エンコーディング(mbstring.internal_encodingの文字コード)に変換されます。
1
mbstring.encoding_translation = On

無効な文字の場合に表示される文字

1
mbstring.substitute_character = "?"

language

  • mb_send_mailを利用した際にのみ使用される
1
php_value mbstring.language Japanese

HTTPの入出力エンコーディング

  • これを指定しても,自動的に文字コードは変換されない。
  • ob_start(“mb_output_handler”)関数でしか有効にならない

HTTP 入力エンコーディング変換を UTF-8 に設定

1
php_value mbstring.http_input = UTF-8

HTTPレスポンスは変換しない

1
php_value mbstring.http_output pass

Please share