• ベストアンサー

自宅Webサーバにアクセスすると必ず文字化けする

アクセスありがとうございます。 Red Hat Linux8.0で自宅Webサーバを構築したのですがインターネットエクスプローラでアクセスすると必ず文字化けしてしまいます。 インターネットエクスプローラの「表示」メニューの「エンコード」が「西ヨーロッパ言語(ISO)」になってしまうのです。 これを「日本語(自動選択)」などにすれば文字化けが直るのですが他のページにジャンプすると再び文字化けが発生してしまうという始末です。 これでは快適なウェブブラウジングなんて、できませんよね。 htmlファイルをアップロードするときにEUCコードにしたりJISコードにしたり試してみたのですが文字化けは直りませんでした。 また「apache」の「httpd.conf」ファイルをいじってみたのですが、まだ文字化けは直りません。 設定ファイルは次のように書き換えたりしました。 AddDefaultCharset ISO-8859-1の文字列を #AddDefaultCharset ISO-8859-1とコメントアウトしたり AddDefaultCharset shift_jisとしたり AddDefaultCharset EUC-JPとしたり AddDefaultCharset noneとしたり AddDefaultCharset ISO-2022-JPとしたり またLanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv twの項目で「ja」を先頭に配置して LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv twとしたりしてみましたが文字化けは直りませんでした。 また「httpd.conf」を変更後は1回1回、/etc/rc.d/init.d/httpd reloadコマンドを実行してインターネットエクスプローラも1回1回、起動し直して試したのですが、やはり文字化けは直りませんでした。 なぜでしょう?? 何か忘れていますか。 また他にどのような設定をすれば文字化けを解消できると思われますか。 何か心当たりのある方、どうか教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

これって、まさに私が http://oshiete1.goo.ne.jp/kotaeru.php3?q=439489 で予告していたことですよね。これではまるのが目に見えていたから 言ったのに、耳を貸さないんだから… 文字化けの原因は、HTTPのヘッダに適切でないcharsetが指定 されていることによりますので、設定を変更したら、ヘッダを取得 できるブラウザで確認してみてください。 w3m の場合、 w3m -dump_head http://hogehoge.domain/ という感じでできます。 手元の RedHat8.0では > harset ISO-8859-1の文字列を > AddDefaultCharset ISO-2022-JPとしたり とするだけで、文字化けは無くなっていますが、他の人の事例で Shift-JISだとこれでもうまくいかないのを目撃しています。 # 理由はさっぱり理解できていません。 HTMLをISO-2022-JPに変換して上記設定を行なうとどうなりますか? うまく行くようなら、この際標準的なISO-2022-JPに統一することをお 勧めします。

zyousuke
質問者

お礼

ご回答ありがとうございます。 そうなんです、まさにastronaut様あなた予想通りの結果になってしまったのです。 しかし、あの日は買ったばかりのLinaxサーバ導入書とインストールディスクが目の前にあったのです。 そのような条件下では私の好奇心を抑制することなど出来るはずがありません。 astronaut様あなたの警告など全く無視しインストールしちゃいました。 「別に止めませんが」というお言葉も頂いたことですし。 と前置きはこのくらいにして結果報告に移りたいと思います。 実は昨晩、質問後もいろいろと試行錯誤した結果、なんと文字化けが発生しなくなりました。 問題解決の決め手となった操作は、はっきり言うと分かりません(汗)。 いろいろ試しているうちに、ふと気が付いたら解決していた、といった感じです。 でも、やったことといえば「httpd.conf」ファイルの AddDefaultCharset ISO-8859-1の文字列を #AddDefaultCharset ISO-8859-1とコメントアウトして LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv twの項目で「ja」を先頭に配置して LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv twとしただけです。 あとインターネットエクスプローラの「一時ファイル」「履歴」「オートコンプリート」を削除したりもしました。 結構↑これが影響しているのかもしれません。 そして現在は何の問題もなく快適にブラウジング出来るようになりました。 「w3m」については興味がありますがWindows上で動作させるには何か面倒な作業が必要なようなので今回は見送ることにします(なんてったって解決しちゃいましたし)。 「ISO-2022-JP」について 僕の使っているFTPクライアントソフトは文字コードを「EUC」と「JIS」に変換できるのですが、どうも「ISO-2022-JP」には未対応のようです。 そういうことですので「HTMLをISO-2022-JPに変換」という作業も今回は見送ることにします(なんてったって解決しちゃいましたし)。 また「理由はさっぱり理解できていません。」とのことですが、そんなことではこの僕に理解できる訳がないですね。 いろんなホームページで「ここをこうしたら直った」というような記事をたくさん目にして僕も真似してみたのですが直らず ひょっとして環境に依存しているのかと深い絶望に陥ったりもしていました。 しかし原因は不明ですが問題は解決してしまいましたので、ひとまず結果オーライということにしておきます。 でも「Apache2.0」は一部では、あまり評判が良くないようで私も、また忘れた頃に突然、文字化けが発生するのではないかとドキドキしています。

その他の回答 (3)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.4

w3mはRedHat8.0に付属してます。(3枚目のCDに入ってます) telnetでログインしてhttp://localhost/にアクセスするだけです。なにも面倒じゃありません。 あと、JIS = ISO-2022-JP です。 本質はわからなくても解決さえすれば良いようですから、どうでもいいことですが。

zyousuke
質問者

お礼

ご返信ありがとうございます。 「w3m」というのはWebブラウザですよね。 サーバ機にWebブラウザをインストールするということでしょうか。 そしてその後「w3m -dump_head http://hogehoge.domain/」というコマンドを実行すればいいのでしょうか。 あと引数のhttp://以下は丸写しでいいのですか。 それとも「127.0.0.1」などのように別のアドレスに置き換えるのですか。 あとJISがISO-2022-JPだったのですか。 これがWindows標準の文字コードですか。 僕は今までシフトJISというものが標準の文字コードだと思っていました。 ということは僕が作成したhtmlファイルは全てISO-2022-JPコードということになるので変換する手間が省けました。 先ほど僕が発言したFTPクライアントについて言い直しますと、こういうことでしょうか。 「僕が使っているFTPクライアントは文字コードを「EUC」と「JIS」に変換可能だが「シフトJIS」には変換できない。」 最後に「本質はわからなくても解決さえすれば良いようですから」というあなたの発言について この発言は僕の心にグサッと刺さりましたよ。 ヒドイですよ。 それでは、まるで僕が努力も何もしないナマケモノのような言いようではないですか。 まー否定は出来ませんけどね(笑)。 でも本当は本質も知りたいんです。 でも、そのために多大な時間を浪費するのであれば、とりあえず問題は解決したのだから他のことに時間を費やしたいと普通の人は考えますよ。 少なくとも僕はそう考えます。 って、なんか反抗文みたいになっちゃってスミマセン。 でもこれは感謝の気持ちを込めた、お礼文です。 僕は回答してくださった方に感謝の気持ちを忘れない!! お礼をするときは回答者に喜んでもらえるように、いつも長時間かけて、お礼の言葉を考えてます。 だから、またご回答くださいね。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

文字コード設定機能をオフにしてみたらどうなります? AddDefaultCharset Off これで文字コードの判定はブラウザ側の機能で行われるはずですが。

zyousuke
質問者

お礼

ご返信ありがとうございます。 早速お教えいただいた方法を確かめてみました。 結果は、といいますと残念ながらダメでした。 AddDefaultCharset Offは 頭に#を付けてコメントアウトするのと同じような設定ですね。 他にも似たような設定のしかたが、たくさんあるのでしょうか。 うーん分からない!! しかしバグ報告が無いということは、やはり僕の設定がいけないのですよね。 アーキテクチャの問題ってことは無いと思いますが、もーー最近トラブルばっかりでもうやだーー! 早くサーバを安定させてホームページ作りにはげみたいよー。 もうLinuxなんて嫌いだーー!! おっと、取り乱してしまいました。 xjd様、他にも何か解決策がひらめきましたら、どうかお知らせください。 よろしくお願いします。 (つーか最近お世話になりっぱなしですね・・・スミマセン)

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

直接的な解決ではありませんが。htmlファイルに <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> のように書き込んで指定してはどうでしょうか?

zyousuke
質問者

お礼

ご回答ありがとうございます。 おおっ、日本語が表示されました。 これはすごいですね。 しかし今まで作成した全てのhtmlファイルに<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">の文字列を追加するのは、かなり骨の折れる作業ですね。 と、そんなことよりも僕が気に病んでいるのはhtmlファイル1つにつき71バイト分のデータ容量が加算されてしまうことです。 え、何をケチ臭いことをとお思いでしょうか。 ケチというよりも、そうです僕は日本人の4割を占める几帳面なA型なのです(笑)。 そういうわけですので、お教えいただいた方法は最後の手段として使わせていただきます。 しかし、このあと不思議な現象が起こりました。 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">の文字列を削除したあとに再びウェブにアクセスしたのですが、なんと文字化けが発生しないのです。 それどころかハイパーリンクからジャンプしたページも次から次へと正常な日本語が表示されていくのです。 その後ブラウザをいったん終了させて再起動させても文字化けせず コンピュータを再起動して再度アクセスしても文字化けは発生せず 別のホストからアクセスしても文字化けが発生しなくなりました。 と喜んでいたのですが、また文字化けするようになってしまいました。 apacheが、なんとも挙動不審な動作をしています。 ちょっと何がきっかけで、また文字化けが発生し出したのかは曖昧で分からないのですが、ブラウザのキャッシュのようなものが影響しているのかもしれません。 結果的に今現在は文字化けしています(涙)。

関連するQ&A