下記のような記述がしていあるhtmlファイルがあります。
<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>
このファイルをAというWebサーバーに置くとブラウザではS-JISとして認識されるのですが、BというWebサーバーでは必ず日本語EUCとして認識されてしまいます。サーバーはどちらもApacheです。サーバー側でなにか設定が必要なのでしょうか?
http://www.eva.hi-ho.ne.jp/aoyama/system/kuro-box09.html
@HomePC - KURO-BOX/HG
httpd.confのなかのAddDefaultCharsetがEUC-JPに設定されているのでしょう。これをoffにすればいいようです。
http://nekhet.ddo.jp/archive/4/2004-10/catid/44
Gentoo Linuxで自宅サーバ Apache 2.0の設定
http://www.site-cooler.com/tips/apache_defaultcharset.htm
[Apache] Apache 2.0 の文字化けを防ぎたい
もし、サーバBの設定を変更できる立場にあるならば、
httpd.confの中の
AddDefaultCharset ISO-8859-1
をコメントアウトしてください。
もし、ここが、
AddDefaultCharset EUC-JP
になっているならば、同じくコメントアウトしてください。この設定になっている可能性が高いように思います。
また、レンタルサーバなどでhttpd.confの設定をいじれない場合は、.htaccessで設定変更が可能か試してみてください。
.htaccessの中で、
AddType ”text/html; charset=Shift_JIS” .html
とすれば、拡張子が.htmlのファイルに対して、全てShift_JISであるというリスポンスヘッダーをApacheが付けてくれるようになりますので、Shift_JISのファイルが文字化けしたりすることはなくなります。
http://www.shtml.jp/htaccess/mojibake.html
文字化け対策としての.htaccess
有難うございます。
Apacheはhttpd.confというファイルで設定します。
AddDefaultCharsetディレクティブを変更すると、レスポンスの文字エンコーディングが変わります。
皆様に教えていただいたAddDefaultCharsetで文字化けが解決したかのように見えたのですが、さらにもう一点教えてください。
http://hoge.com/index.htmlみたいなアクセスをした場合は文字化けしないのですが、http://hoge.com/のようにアクセスした場合やはりEUCとして認識されてしますます。この二つに違いはあるのでしょうか?
httpd.confは以下のように設定しています。
DirectoryIndexrectoryIndex index.html index.html.var
DefaultCharsetとSSIの設定 - Gentoo Linuxで自宅サーバ
文字化けする方はおそらく DefaultCharset が httpd.conf や .htaccess 等で EUC-JP に設定されています。
その項目をオフにするか、Shift_JIS に変更することで文字化けを回避できると思われます。
有難うございます。