【PR】 日用品もネットで購入できます。
【PR】 医師・薬剤師・福祉関連に強い転職支援サイト
【PR】 キャリアアップ(就職・転職)に役立つメールマガジンなど
【PR】 専用サーバ v.s. レンタルサーバ
 

・.htaccessによる認証の後、ネスケ4.Xで文字化けする

DB数・メールアドレス・ドメイン・サブドメイン・FTPアカウント無制限の
レンタルサーバーMUGEN



左の画像は、Windows版IEにおいて、.htaccessにてユーザー認証が必要なアクセス制限がかけられているページへアクセスした際に表示されるダイアログである。Windows版IEでは、このようにIDとパスワードの入力欄と、次回以降同じ入力を何度もしないで済むように「パスワードを記憶させる」ことが可能です。

一方、ネットスケープ4.Xでは、左のようなダイアログが表示されます。ネットスケープ4.Xでは、「パスワードを記憶あせる」ことは、フリーソフトなどを使わないとできません。これはセキュリティ的な理由でしょうから構わないのですが、実はこの認証後現れる日本語ページは、"対策"がされていない限り、必ず文字化けします。

左の画像のように文字化けします。.htaccess認証後のページだけでなく、メタタグやlocationなどでページを遷移させた場合などにも同様の文字化けが見られます。例えば、掲示板での投稿後、元の投稿一覧ページに遷移させた場合など。いずれもリロード(再読み込み)すると必ず文字化けは解消します。

ここで文字化けの仕方に注目します。必ず、文字化けには規則性があります。規則性がない文字化けはありません。分かることは、英数字は文字化けしません。そして、元の文章はShift_JISでしたが、Shift_JISでは使われない文字が表示されています。例えば、「¶」や「Å」、「ê」などです。これらの文字は「iso-8859-1(Latin-1)」と言われる文字コードです。

「iso-8859-1(Latin-1)」の一覧表及び、Shift_JISにないはずの「¶」の入力方法などについては を参照してください。また、なぜ、ここで「iso-8859-1(Latin-1)」がここで現れるかについては、下記のサイトを参照してください。私もこの文字化けに悩んだ際、このサイトに助けられた経験があります。

(参照)▼ Apache 1.3.12 文字化け問題
http://www.asahi-net.or.jp/~AE5T-KSN/apache/charset-problem.html

要は、ネットスケープ4.Xでは、.htaccess認証後のページで、メタタグでどのように文字コードを設定しておこうが、それを無視して、iso-8859-1として出力してしまうバグがあるのです。この問題の背景には、クロスサイトスクリプティング(Cross Site Scripting。CSS問題。CSSと書くとスタイルシートのCSSと紛らわしいいので、最近ではXSS問題とも言います。)というセキュリティに関する重大問題にApacheが対応したことがあります。クロスサイトスクリプティングについては、「文字コードとセキュリティ」の章も参考にしてください。

文字化けシミュレーション

元の文字コードは Shift_JIS   EUC-JP

  
  これを検証するために作成したものが下記です。例えば「文字化けテスト」と入力してボタンをクリックすると、別ウインドウが開き、文字化けをシミュレーションできます。ただし、Mac版ネットスケープ4.Xでは、予期したとおりに文字化けせずに別の文字化けを起こしました(笑)。

この文字化けテストでは、強制的に「iso-8859-1(Latin-1)」のHTTPヘッダー及びメタタグを出力しています。ですので、日本語文字は必ず文字化けします。そして、先のネットスケープ4.Xの文字化けしたスクリーンキャプチャーと一緒の化け方であることが分かります。

こうして、原因が分かりました。では、対策は?というと、「メタタグの有効性」の項でも説明しましたが、.htaccessが利用可能であれば、.htaccessを利用するのが一番のような気がします。

AddType "text/html; charset=Shift_JIS" .html

としておけば、ネットスケープ4.Xでも、.htaccess認証後のページを強制的にiso-8859-1と認識するのではなく、.htaccessの設定を尊重し、Shift_JISで出力してくれます。これで文字化けは解消します。.htaccessを使ったBasic認証後に表示される文字化け解決に、.htaccessを使うというのも何とも皮肉な話ですが、これは確かに直ります。

なお、ご利用になられているホームページサービスによっては、.htaccessを許可していない場合もあります。その場合は.htaccessが利用可能なレンタルサーバを借りなければいけないかもしれません。.htaccessが利用可能なサーバはこちらを参照してください。

次のページは、「Mac版ネットスケープ4.XでのみJavascriptが動かない謎」と文字コードの関係を調べます。