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

ページをリロードし再確認すると無事に表示されるようになった。