【PR】 日用品もネットで購入できます。 【PR】 医師・薬剤師・福祉関連に強い転職支援サイト 【PR】 キャリアアップ(就職・転職)に役立つメールマガジンなど 【PR】 専用サーバ v.s. レンタルサーバ |
||||||
・.htaccessによる認証の後、ネスケ4.Xで文字化けする
DB数・メールアドレス・ドメイン・サブドメイン・FTPアカウント無制限の 左の画像は、Windows版IEにおいて、.htaccessにてユーザー認証が必要なアクセス制限がかけられているページへアクセスした際に表示されるダイアログである。Windows版IEでは、このようにIDとパスワードの入力欄と、次回以降同じ入力を何度もしないで済むように「パスワードを記憶させる」ことが可能です。 一方、ネットスケープ4.Xでは、左のようなダイアログが表示されます。ネットスケープ4.Xでは、「パスワードを記憶あせる」ことは、フリーソフトなどを使わないとできません。これはセキュリティ的な理由でしょうから構わないのですが、実はこの認証後現れる日本語ページは、"対策"がされていない限り、必ず文字化けします。 左の画像のように文字化けします。.htaccess認証後のページだけでなく、メタタグやlocationなどでページを遷移させた場合などにも同様の文字化けが見られます。例えば、掲示板での投稿後、元の投稿一覧ページに遷移させた場合など。いずれもリロード(再読み込み)すると必ず文字化けは解消します。
ここで文字化けの仕方に注目します。必ず、文字化けには規則性があります。規則性がない文字化けはありません。分かることは、英数字は文字化けしません。そして、元の文章はShift_JISでしたが、Shift_JISでは使われない文字が表示されています。例えば、「¶」や「Å」、「ê」などです。これらの文字は「iso-8859-1(Latin-1)」と言われる文字コードです。
(参照)▼ Apache 1.3.12 文字化け問題 要は、ネットスケープ4.Xでは、.htaccess認証後のページで、メタタグでどのように文字コードを設定しておこうが、それを無視して、iso-8859-1として出力してしまうバグがあるのです。この問題の背景には、クロスサイトスクリプティング(Cross Site Scripting。CSS問題。CSSと書くとスタイルシートのCSSと紛らわしいいので、最近ではXSS問題とも言います。)というセキュリティに関する重大問題にApacheが対応したことがあります。クロスサイトスクリプティングについては、「文字コードとセキュリティ」の章も参考にしてください。
この文字化けテストでは、強制的に「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が動かない謎」と文字コードの関係を調べます。
|