文字化けを回避する.htaccessの設定
WEBサイト制作中、ページプレビューしていると文字化けすることがある。 これは、ブラウザが前に見ていたサイトの文字エンコーディングを引きずり、誤った文字コードでページを表示してしまった時に発生する。
この現象は、<meta http-equiv="content-type" content="text/html; charset=utf-8">と記述していても起こるので、サーバーレベルで対処しなければならない。
やり方は簡単で、下記の1行を .httaccess に追加するだけ。
注意事項
.htaccess をルートディレクトリに設置した場合、 全てのページが指定した文字コードで出力される。通常のHTMLと、CGIページのエンコードが異なる場合は、 各々のディレクトリに.htaccessを設置しなければならない。
追記:2020年3月23日 特定のApacheのバージョンにバグがある
バージョンの詳細は伏せますが、AddDefaultCharsetを設定しても文字エンコードがHTTPヘッダに反映されないApacheのバグがある事を確認しました。
2.2系でも2.4系でも、とあるマイナーバージョンでバグがあります。
バグがあるバージョンではAddDefaultCharsetを設定しても「charset=xxx」がHTTPヘッダに追加されないので、文字化けを解消することができません。
AddDefaultCharsetが効かないバージョンでのバグ回避策
面倒ではありますが、.htaccessに拡張子ごとに下記のような記述を追加することで文字化けを解消できます。
上記の例は拡張子「.html」に対する設定です。正規表現を用いているので、<Files ~ >よりも<FilesMatch>が推奨されています。
参照:Apache 公式ドキュメント<Files>
ディレクティブ項