過去に作られたデータベースにデータを登録するプログラムを、XAMPPをインストールして動作させました。
動作するまでに起きた現象と対処について、以下の記事で書きました。
ajya.hatenablog.jp
文字化けが発生する
PHPのファイルはShift_JISで作成されていて、Webページにアクセスすると、Internet Explorer 11、Mozilla Firefox、Google Chromeを使っても文字化けが発生しました。PHPファイルのHTML部分のheadには、
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
が記述されています。
これで文字化けする理由がわからず検索したところ、.htaccessファイルにAddTypeでファイルに対しての文字コード記述を追加するという記事がありました。
記事を参考に、
AddType "text/html; charset=Shift_JIS" .php
としてみましたが、文字化けは解消しませんでした。
photo credit: US Department of State Anti-Corruption Conference in Afghanistan via photopin (license)
文字化けを解消する方法
文字化けの解消方法を求めてさらに検索すると、htmlが読み込まれるより前に、PHPのheader()関数で文字コードを出力するという記事がありました。記事に書かれていたとおりに
<?php header("Content-Type: text/html; charset=Shift_JIS"); ?>
を追加したところ、文字化けが解消されました。
今後あらためて確認が必要
.htaccessへの記述の追加と、PHPのheader()関数の利用は、同じことをしているという認識でいましたが、結果が違いました。今回はXAMPPをインストールして動作するようになるまでに時間がかかりすぎていて、文字化けが解消できた時点で、調べるのを止めています。
まだ利用する機会があるので、.htaccessファイルに記述する方法で対処できないものか、再度確認をする予定です。
今回記事を書くにあたり改めて検索したところ、.htaccessファイルに以下の内容を記述するという記事がありました。
これで文字化けが発生しなくなるのが、試してみます。
AddDefaultCharset shift-jis AddType "text/html; charset=shift-jis" .html .php php_value default_charset Shift_JIS php_value mbstring.language Japanese php_value mbstring.http_input auto php_value mbstring.http_output SJIS php_value mbstring.internal_encoding Shift_JIS
最近のブラウザ
Mozilla Firefox以外は、表示しているページ文字コードの指定ができない、少なくともわかりやすいメニューに存在しない、ということに気がつきました。文字化け自体に遭遇することがないので、必要ないのかもしれませんが、古いページでは発生する可能性があるので、選べたらいい、と今回改めて感じました。