■Apache2.0で文字化けする。

[原 因]

Apache2.0では、デフォルトで強制的にISO-8859-1(UTF-8)キャラクタセットで表示するようになっており、下記のようにコンテンツのMETAタグで「charset=Shift_JIS」等の指定をしていても文字化けしてしまう。

   <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

[対 策]

対策方法は、サイトのコンテンツで使用している文字セットにより異なり、httpd.confのAddDefaultCharsetディレクティブの設定(デフォルト:AddDefaultCharset ISO-8859-1)で調整する。おやじのサイトでは、MRTGでサーバの稼動状態をグラフ表示しているが、このコンテンツはEUC-JPで自動生成されている。他はShift_JISであるため、3の方法で設定している。フリーのCGI等でMETAタグが出力されないものがあり、その場合は改造している。サイト全体で文字セットを統一できない場合は、3以外の方法はない。

設定を変更して試験するときは、ブラウザのキャッシュをクリアしてから試験をしないとキャッシュを見ていることになり確認ができないので注意が必要である。

  1. サイトのコンテンツが全てシフトJISの場合

     AddDefaultCharset shift_jis

  2. サイトのコンテンツが全てEUC-JPの場合

     AddDefaultCharset EUC-JP

  3. サイトのコンテンツのキャルクタが統一できていないが、全てMETAタグで「charset=Shift_JIS」等で指定されている場合

     AddDefaultCharset off (offがデフォルトのため、AddDefaultCharsetディレクティブをコメントアウトしても良い)

LanguagePriority は、ここでいう文字化けとは関係なく、MultiViews 環境でブラウザが言語の優先順位を提供してない場合の優先度を指定するもので、通常はコンテンツも対応していないので変更不要。

なお、ブラウザとのネゴシエーションで日本語を優先させるため、LanguagePriorityディレクティブのjaを先頭に移動しておく。(デフォルトは単にアルファベット順に並んでいるだけ)

LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw

       ↓移動

LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv tw


Top Pageへ     戻る