文字セットの設定について

最近は動的Webページにおいて文字セットにはUTF-8が使用されることが多い。
しかし,これまでのWebサイトの履歴からS-JISが使われることもある。
その場合,html文書中にcharset=Shift-JISと書いてあっても,文字化けを起こすことがある。
apache2,PHPで動的Webページでhtml文書内の文字セット記述を有効にする設定をメモしておく。

1.apache2サーバ

apache2の設定ファイル中に

  AddDefaultCharset UTF-8

が書いて有る場合は,html文書中にcharset=Shift-JISと書いてあっても無視される。
そのため,他の文字セットを使用する場合には,次のようにコメントアウトしておくとよい。

  #AddDefaultCharset UTF-8

こうすることによって,html文書中のcharset=Shift-JISが有効になる。

例えば
  <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS">

設定ファイルは次のようなところにある
ubuntuの場合 /etc/apache2/conf-available/charset.conf
CentOs7の場合 /etc/httpd/conf/httpd.conf

2.PHP

PHP.ini中に

  default_charset = "UTF-8"

が書いてある。
しかし,.phpファイル中のヘッダ記述で打ち消すことが出来る。

例えば

  <?php header('Content-Type: text/html; charset=Shift-JIS'); ?>

を.phpファイルの先頭に入れておくこちらが優先される。