マルチバイト文字列関数設定
では、マルチバイト文字列関数の設定を行なっていきます。
php.iniで [mbstring] を検索してください。
[php.ini]
[mbstring]
; language for internal character representation.
; http://php.net/mbstring.language
;mbstring.language = Japanese
; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://php.net/mbstring.internal-encoding
;mbstring.internal_encoding = EUC-JP
; http input encoding.
; http://php.net/mbstring.http-input
;mbstring.http_input = auto
; http output encoding. mb_output_handler must be
; registered as output buffer to function
; http://php.net/mbstring.http-output
;mbstring.http_output = SJIS
; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
; http://php.net/mbstring.encoding-translation
;mbstring.encoding_translation = Off
; automatic encoding detection order.
; auto means
; http://php.net/mbstring.detect-order
;mbstring.detect_order = auto
; substitute_character used when character cannot be converted
; one from another
; http://php.net/mbstring.substitute-character
;mbstring.substitute_character = none;
; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
;mbstring.func_overload = 0
; enable strict encoding detection.
;mbstring.strict_detection = Off
; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated.
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml)
;mbstring.http_output_conv_mimetype=
; Allows to set script encoding. Only affects if PHP is compiled with --enable-zend-multibyte
; Default: ""
;mbstring.script_encoding=
上記がXAMPP環境でのマルチバイト文字列関数の設定箇所となります。MAMP環境でも表記の違い等はありますが設定する項目は同様ですのでこちらをもとに設定を行なっていきます。
ハイライトされている行が設定する項目となります。各項目の詳細に関してはPHPマニュアル、参考サイトを御覧ください。
なお、デフォルトでのmbstringの設定を http://localhost/xampp/phpinfo.php より確認すると以下の通りとなっています。
ではphp.iniのmbstringの設定を編集していきます。
デフォルト言語を日本語に設定します。mbstring_languageをアンコメントします。
;mbstring_language = Japanese
↓
mbstring_language = Japanese
内部文字エンコーディングのデフォルト値を”UTF-8″にします。
;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = UTF-8
HTTP入出力文字エンコードのデフォルト値を”pass”にします。
;mbstring.http_input = auto
;mbstring.http_output = auto
↓
mbstring.http_input = pass
mbstring.http_output = pass
HTTP入力エンコーディング変換を無効にします。
;mbstring.encoding_translation = Off
↓
mbstring.encoding_translation = Off
文字コード検出順序のデフォルト値を定義します。”auto”だとASCII, JIS, UTF-8, EUC-JP, SJISの順序となるので指定しておきます。
;mbstring.detect_order = auto
↓
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
無効な文字列があった場合の代替文字のデフォルト値を設定します。今回は”none”を指定します。
;mbstring.substitute_character = none;
↓
mbstring.substitute_character = none;
シングルバイト対応の関数をマルチバイト対応関数でオーバーライド(置換)すると不具合が発生する可能性があるのでオフにします。
PHP: 関数のオーバーロード機能 – Manual
;mbstring.func_overload = 0
↓
mbstring.func_overload = 0
文字コードの自動判別を厳密に行うかどうかの設定でメリット・デメリットがあるようですが今回は”Off”にします。
;mbstring.strict_detection = Off
↓
mbstring.strict_detection = Off
以下2つに関しては今回は必要無いのでコメントのままとしておきます。
;mbstring.http_output_conv_mimetype=
;mbstring.script_encoding=
php.iniを上書きした後、Apacheを再起動して変更を反映させてください。
再度PHPの設定一覧よりmbstringの項目を見ると設定内容が反映されているのが確認できると思います。