惜しい
しかし、ほとんどの場合こう設定すると混乱を極めることになる。
混乱しないようにするにはこう設定すべきだ。;; Disable Output Buffering
output_buffering = Off;; Set HTTP header charset
; default_charset = EUC-JP;; Set default language to Japanese
mbstring.language = Japanese;; HTTP input encoding translation is enabled.
mbstring.encoding_translation = off;; Set HTTP input encoding conversion to auto
mbstring.http_input = pass;; Convert HTTP output to EUC-JP
mbstring.http_output = pass;; Set internal encoding to EUC-JP
mbstring.internal_encoding = EUC-JP;; Do not print invalid characters
mbstring.substitute_character = none
混乱しないようにするにはmbstring.internal_encodingは未設定(厳密には未設定は「ISO-8859-1」として扱われるけど)にしようよ.
PHPは何もWebだけ取り扱うわけではない。
Webもあればメールもあるし、
CSVやXMLもあれば、
コマンドラインもある。
そんな状態でこんなコードが自動で送信されれば迷惑この上ない。
なので、default_charsetは使用すべきではないのである。
default_charsetを設定しないのは同意ですが,コマンドラインにまで言及するなら抜本的には
php -q foo.php |<< で問題ありません.というかどう設定していようが「-q」は付けるべき. ><blockquote cite="http://hain.jp/index.php/tech-j/2007/02/13/p125" title="PHPの文字化けを本気で解決する - ぎじゅっやさん">< だが、実際はほとんど使われていないパラメータなのだ。 ></blockquote>< doubt,ご自身でもデフォルトエンコーディングと書かれている通り,多くの場面で使われていると思いますよ. >|php| $foo = 'PHPで日本語で使えるのは「たまたま動いているだけなので地雷の避け方を身につけよう」と思う位の方が気が楽かも(何'; $length = mb_strlen($foo);
とかありがちですね.
それ以外は特に間違っていないんじゃないでしょうか.
超きわpでも同様のこと書いていますが,数年経ってもあんまり状況かわってないすよね(苦笑