マルチバイト周り基準の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);