gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

マルチバイト周り基準のphp.ini 設定草案

php.ini側

; magic_quotesとかあり得ないでしょ
magic_quotes_gpc = Off
; 自動ってキライ
mbstring.encoding_translation = Off
mbstring.func_overload = "0"


やむを得ず.htaccess

; magic_quotesとかあり得ないでしょ
php_flag magic_quotes_gpc off
; 自動ってキライ
php_flag mbstring.encoding_translation off

プログラム側

// charsetの送信 を無効にする
ini_set('default_charset', '');

// 内部文字コード指定
setlocale(LC_ALL, 'ja_JP.UTF-8');
ini_set('mbstring.language', 'Japanese');
ini_set('mbstring.internal_encoding', 'UTF-8');

// 文字コードの自動判定用
// XXX sjisの可能性が高い場合は「sjis-win,eucjp-win,JIS,UTF-8,ASCII」のほうがよさげ
mb_detect_order("UTF-8,sjis-win,eucjp-win,JIS,ASCII");

// request文字の自動変換とかしない
ini_set('mbstring.http_input', 'pass');

// response文字の自動変換とかしない
ini_set('mbstring.http_output', 'pass');

// 厳密なエンコーディング検出を行いません
ini_set('mbstring.strict_detection', '0');

// 文字コード変換で「おかしな値」が入ってきたときに出す、代替文字の指定
ini_set('mbstring.substitute_character', '?');

// mb_output_handler()使わないから設定潰す〜
ini_set('mbstring.http_output_conv_mimetypes', NULL); // XXX NULLでよいかしらん?

// 「スクリプトをinternal_encodingとは違うエンコードで書きたい場合の指定」はいらない
ini_set('mbstring.script_encoding', NULL);