Web開発における文字コードの指定において、今はUTF-8がデファクトスタンダードとなりつつあるが、一部のサーバーやサービスにおいては、未だにShift_JISなどの日本語文字コードが使われることがある。
仕事で、auが運営するショッピングモール「Wowma!」に出店することになったのだが、オリジナルのHTMLファイルは全て「Shift_JIS」にしなさい、との指示があった。
普段、SublimeText3をメインエディタとして使っているのだが、このエディタはデフォルトでShift_JISをサポートしていない。編集ができないのだ。
ただ、これについては有名なプラグイン「ConvertToUTF8」で解決する。
プラグインをインストールし、SublimeText3で無事にShift_JISコードのHTMLファイルが完成したのだが、テスト環境であるVagrant上のWebサーバーで確認したところ、ページが文字化けして表示された。
metaタグによる文字コード指定、ファイルの文字コード、どちらも問題はない。
Apacheデフォルト設定による問題
確認したところ、どうやらApacheの設定ファイル(httpd.conf)のデフォルト設定でUTF-8以外の文字コードに対応しないようになっているようだ。
httpd.confファイルを確認しよう。
vim /etc/httpd/conf/httpd.conf
文字化けの原因となっている該当コードがこれだ。
AddDefaultCharset UTF-8
この設定を解除してやる必要があるのでコメントアウトする。
# AddDefaultCharset UTF-8
Apache再起動。
systemctl restart httpd
ページをリロードし再確認すると無事に表示されるようになった。