Webシステムは全てをUTF-8に統一するのが現代の結論。 HTTPヘッダ・metaタグ・ソース・DB・関数引数のどこかで文字コードがずれると、 文字化けや、検証をすり抜けるXSSの温床になる。自動判定に頼らないこと。
下のiframeは、同じUTF-8のバイト列を、指定した charset で解釈させたもの。
UTF-8(正しい) | ISO-8859-1 | Shift_JIS
いまの指定: UTF-8。
UTF-8以外だと日本語が化ける。同じバイト列でも解釈次第で全く違う文字になる。
Content-Type: text/html; charset=UTF-8 を必ず出すhtmlspecialchars($s, ENT_QUOTES, 'UTF-8'))も UTF-8 に統一