• ベストアンサー

ホームページの文字化け

お世話になっています。 検索しましたが、引っかからなかったので投稿します。よろしくお願いいたします。 環境はRedhat9.0、apache2.054を使用しています。 自宅でホームページを運用しようと考えているのですが、作成したindex.htmlを開くと文字化けが発生します。以前は問題なかったのですが、1ヶ月ほど前にcgiを導入してからこのような現象になったと思います。 ページのデフォルトエンコードが西ヨーロッパ言語(ISO)になっている様子で、エンコードを変更すれば文字化けは直るのですがページの更新をかけると現象が再現します。 自分で調べては設定を見ましたが、現象が改善しませんので御教授お願いいたします。 現在の設定環境は以下の通りになります。 /var/www/html/index.htmlに下記追加 <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> httpd.confを編集 #AddCharset ISO-8859-1 .iso8859-1 .latin1 #AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen #AddCharset ISO-8859-3 .iso8859-3 .latin3 #AddCharset ISO-8859-4 .iso8859-4 .latin4 #AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru #AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb #AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk #AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb #AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk 上記をコメントアウト AddDefaultCharset off  追加 LanguagePriority ja  のjaを先頭に変更 /var/www/.htaccess  を追加し、下記記入 AddType "text/html; charset=ISO-2022-JP" html /etc/sysconfig/i18n LANG="ja_JP.eucJP" SUPPORTED="ja_JP.eucJP:ja_JP:ja" SYSFONT="lat0-sun16" SYSFONTACM="8859-15" 長文になりましたが、上記より改善方法がわかる方御教授お願いいたします。

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

  • ベストアンサー
  • Caldron
  • ベストアンサー率100% (4/4)
回答No.5

> AddDefaultCharsetを指定していないのに > デフォルトのエンコードが西ヨーロッパ言語(ISO)に > なるのはなぜなんでしょう。 むぅ、自信はないですが、どこか別のファイルで、デフォルトのcharsetを指定しているように見えますけど…… 状況から、サーバがcharsetを送出しているように見えます。 AddTypeなどが別のファイルにあるとか…… 気になるのはcgiを導入してからというところですね。 cgiを導入したときにした設定で、似たようなところはないでしょうか?

drinkers
質問者

補足

すみません初歩的なミスをしていました。 httpd.confの設定を変更した後再起動をかけたのですが、 エラーのため再起動がかかっていませんでした。 エラーを回避し、再起動をかけると文字化けが直りました。 ANo4でDefaultCharsetをoffにしたのがよかったと思います。 ご報告遅くなりましたが、御教授ありがとうございました。

その他の回答 (4)

  • Caldron
  • ベストアンサー率100% (4/4)
回答No.4

/var/www/.htaccessから > AddType "text/html; charset=ISO-2022-JP" html を削除し、 AddDefaultCharset off としたらどうでしょう? (charsetを指定しないという方法です) shift_jis で書かれたページを iso-2022-jp で表示するように指示しているために化けているような気がします。 日本語が使えるcharsetには iso-2022-jp(いわゆるJIS) shift_jis(シフトJIS) euc-jp(日本語EUC) utf-8(Unicode由来) などが登録されています。 それぞれ違っていて、どれに統一すればいいとかそういうことは私には言えません。 なお、No.3の「回答に対する補足」にある方法では、 実際のファイル内の charset が変わってなければ意味がありません。 AddDefaultCharset や <META http-equiv="Content-Type"> で指定する charset でhtmlファイルの中身を書かなければ、まず化けると思います。

drinkers
質問者

補足

/var/www/.htaccess 自体をリネームして AddDefaultCharset off に設定 <META http-equiv="Content-Type">に shift_jis を指定したのですが現象改善しません。。 AddDefaultCharsetを指定していないのに デフォルトのエンコードが西ヨーロッパ言語(ISO)に なるのはなぜなんでしょう。 なにかサーバー側のキャッシュクリア等が必要になるのですか? 作成したindex.htmlをサーバーにおかずにクライアント端末においてローカル公開すれば問題なく表示され、エンコードもシフトjisで表示されます。 ということはサーバ側の設定になると思うのですが、ほかに修正かける場所というのはありますか??

  • entree
  • ベストアンサー率55% (405/735)
回答No.3

> AddType "text/html; charset=ISO-2022-JP" html まず、これを追加するのであれば、 AddDefaultCharset ISO-2022-JP とする方がよいでしょう。あと、 > <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> > AddType "text/html; charset=ISO-2022-JP" html これって、キャラクタセットが一致してませんよ。 ついでに言っておくと、CGIやその他の設定項目(AddCharsetのコメント化や/etc/sysconfig/i18nなど) は文字化けとは関係ないでしょう。

drinkers
質問者

補足

AddDefaultCharset ISO-2022-JP <META http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP"> に変更したのですがまだ文字化けが続いている状態です。。 何の文字セットに統一したらいいとかってあるんですか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

index.htmlはSHIFT_JISなんですよね? ISO-2022-JPは、いわゆるJISですよ。 そこらへんの不整合によるのではないでしょうか? 見当違いだったらすみません

drinkers
質問者

補足

上にも書きましたが、 <META http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP"> に変更しましたが、現象は改善しませんでした。 ちなみに[SHIFT_JIS]、ISO-20220JP、X_JISって何が違うんですか? なにかお薦めってありますか? 根本がわかっていなくて申し訳ありません

  • mendokusa
  • ベストアンサー率13% (359/2726)
回答No.1

apacheの設定の問題でしょう。 少しずつ元に戻していけば分かるんじゃないですか。 .htaccessを外してみるとか AddDefaultCharset を変えてみるとか あとリロードくらいでは反映されない場合があるので 複数の端末で確認してください

関連するQ&A

  • 文字化けします。

    マルツオンラインのメールマガジンが最近文字化けするようになりました。 メールの二行ほどに以下のメッセージを読むことができます。 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit 突然の文字化けでエンコード等を色々変えてみましたが、未だに読めません。 読めるようにするにはどうしたらよいのでしょうか。

  • ウェブサイトが文字化けします

    知り合いのウェブサイトのことで質問させていただきます。 サーバーがアメリカにあり、アップデートはネット上で行うアメリカのウェブ作成ツール(詳しくは聞いてないのですが)というのを利用しているらしいのですが、今までデフォルトで普通に日本語が表示されていたのに、1週間ほど前から文字化けするようになりました。 ブラウザでエンコードをすれば元に戻るのですが、しないと化けています。 ちなみにIEで見たときは「西ヨーロッパ言語」になっていて、「日本語-自動選択」にエンコードして正しく表示されました。 Firefoxでは「西欧」になっていて「日本語-Shift-JIS」にしたら直りました。 htmlソースに <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> と書かれていたので、charsetをShift-JISとISO-2022-JPとに変えてみてもらったのですが、全然なおりません。 どうしたら文字化けしなくなりますか? もちろんこれは私のPCでのみ起こっている現象ではなく、どこで見てもそうなっています。 ご助言お願いいたします。

  • OSから返ってきた文字が文字化けしてしまう

    OS:Linux9 PHP Version 4.3.10です。 exec("whois -h whois.jprs.jp $host,$output); print implode($output,"<br>"); とすると文字化けしてしまいます。 まず確認したのが ファイル名:/etc/sysconfig/i18n ------------------------------ #LANG="C" LANG="ja_JP.eucJP" #SUPPORTED="C:C:C" SUPPORTED="ja_JP.eucJP:ja_JP:ja" SYSFONT="lat0-sun16" SYSFONTACM="8859-15" ------------------------------ ■スクリプトファイルの文字コード EUC-JP(エディタで確認しました) ■ブラウザで実行した場合の文字コード EUC-JP(<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">を挿入) ■$outputの文字コード print mb_detect_encoding($output[$i]); (配列全て調べましたが、UTF-8でした) ■苦肉の策 ファイルの文字コード、表示エンコードをUTF-8にしても同じく文字化けしてしまいます。 どなたか同じような経験をされた方、情報いただけないでしょうか?

    • 締切済み
    • PHP
  • postfixの文字化けで困っています。

    postfix&gmailでの文字化け時のエラー文 MIME-Version: 1.0 content-Type: text/plain; charset=ISO-2002-JP Content-Transfer-Encoding: 7bit と出ます。 どうしろと言ってますか??

  • 海外からのメールの文字化け

    お世話になります。海外(たぶんカナダ)から仕事用のメールが来たのですが文字化けして読めません。なにかいい方法はないでしょうか。この分だと多分こちらからのメールも文字化けしているのではと思います。ちなみに送られてきたメールの情報は  Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="ISO-2022-JP" です。エンコードを変えたりしたのですが全然だめです。ちなみにoutlook expressです。よろしくお願いいたします。

  • PHP でデータファイルを別にすると文字化け

    PHPの初心者ですが、文字化けで困っています。 index.php には以下の内容を入れています。 <?php include("ja.php"); echo '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <p>'.$WELCOME_TEXT.'</p> </body> </html>'; ?> ja.php には以下の内容を入れています。 <?php $WELCOME_TEXT = 'ようこそ'; ?> これでindex.phpを表示させても「????」と出るだけなのですが、どうすれば文字化けがなくなるのでしょう?どちらのファイルもUTF-8のエンコードで保存しています。

    • 締切済み
    • PHP
  • HTML・PHPの文字化け

    こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

    • ベストアンサー
    • HTML
  • CGI 文字化け

    CGIプログラムでうまく日本語が表示できません。 表示できても、余分な文字列が入ってしまいます。ソースは以下です。 #!/usr/bin/perl -w print "Content-type: text/html\n\n"; use DBI; use CGI; $q = new CGI; print $q->header; $no = $q->param('no'); $program= $q->param('program'); my $UDBNAME=""; my $USERNAME=""; my $USERPASS=""; my $db = DBI->connect("DBI:Pg:dbname=$UDBNAME",$USERNAME,$USERPASS); my $sth=$db->prepare(" select * from server where no = $no "); $sth->execute; my $num_rows=$sth->rows; if($num_rows <= 0){ print <<"_HTML_"; <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=ecu-jp"> </HEAD> <BODY> <TITLE>Server Search</TITLE> <img src = "http:///Logo.gif"> <BR> <HR width="90%"> <BR> <BR> 文字化け確認! <BR> <BR> <HR width="90%"> </HTML> _HTML_ 以上のようなプログラムをブラウザーで表示させると 先頭行に  Content-Type: text/html; charset=ISO-8859-1 と表示されてしまいます。文字化けはしないのですが、余計な Content-Type: text/html; charset=ISO-8859-1 はどうしたら取り除けるのでしょうか? ちなみにapacheの設定も AddLanguage ja .ja を先頭に LanguagePriority ja en ca cs AddCharset EUC-JP .euc-jp .cgi を先頭に のように設定しております。 もし、お分かりの方教えてください。

    • ベストアンサー
    • CGI
  • Gmailで文字化けしてしまいます。

    こんにちは。あるサイトから送られてくるメールが全て文字化けしてしまいます。Gmailでこんなことが起こることは他にありません。ヘッダーをみると、 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit という表示があります。この辺りが怪しいのかなと思っています。 ただ、表示を日本語ISOにしても換わりません。ブラウザはFF3を使っていますが、FFFDという四角がたくさん出てきます。 どなたかきちんと表示する方法を教えてください。よろしくお願いします。

  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

    • 締切済み
    • PHP