惜しい

しかし、ほとんどの場合こう設定すると混乱を極めることになる。
混乱しないようにするにはこう設定すべきだ。

;; 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.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII

混乱しないようにするには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でも同様のこと書いていますが,数年経ってもあんまり状況かわってないすよね(苦笑