- ベストアンサー
apacheの文字化け
こんにちは。 今日、初めて、apacheというものを、会社のパソコンにインストールしました。 まったくの素人で、まだまだ、知識はゼロに近いので、うまく質問ができないかもしれません。 ある、サイトで、インストーラーをダウンロードしまして、apacheをインストールしました。 htdocsというのが、デフォルトの場所なので、そこに htmlファイルを置き、ブラウザで、localhost/ファイル名を指定して、ファイルを開きました。 すると、きちんと日本語で、表示されました。 次に、そのファイルをhtdocsのフォルダ内に新しく 作成した、testというフォルダの中にコピーして おきました。 localhost/test/ファイル名と指定してブラウザを開いたところ、今度は、日本語で表示されず、西ヨーロッパ言語というものになってしまいました。 これを直す方法はありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No1の補足ですが、ブラウザーのキャッシュをクリアしてからもう一度試すとどうなりますか?
その他の回答 (3)
- mitoneko
- ベストアンサー率58% (469/798)
言語の化ける原因と対策に関しては、No.2のtoginoさんが詳しく説明しておられる通りです。 が、一部補足しておきます。 htmlファイルをwindowsで作ると、キャラクターセットがshift_JISになります。これは、windowsの標準の日本語文字セットがShift_JISであるためです。 ところで、一般的に、コンピュータやOSを問わない環境で文字セットを選択する場合は、JISコードで記載されることが少なくありません。 No.1とNo.2で記述されているAddDefoultCharsetですが、このオプションは、結構強力なオプションです。(実は、強力すぎます。) まず、ホームページを日本語で作成するときには、次の行をhtmlファイルのヘッダブロックに入れて、文字コードを指定する習慣を付けることをおすすめします。 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> ところで、この行は、このファイルはShift_JISで書いてありますよと、htmlファイルに自己主張させています。 ところが、AddDefoultCharsetディレクティブでの指定は、このhtmlファイルの自己主張より優先します。たとえば、 AddDefoultCharset ISO-2022-JP とhttpd.confのルート部分で記載されていると、あなたのサイトにおけるすべてのファイルはJISコードで記載してあります。と宣言していることになります。先のmetaタグの行がかかれたファイルさえ、「このファイルはJISコードです」と宣言していることになります。(これがさっき、強力すぎると書いた理由です。) もし、このAddDefoultCharsetを使用するのであれば、必要なディレクトリーのオプションを指定してあるDirectoryブロックの中で必要最小限使用することをおすすめします。 ちなみに、No.2さんのかかれた各オプションの順番は、優先順位が高い順にかかれています。 また、そのうち、どこかのサイトから、日記帳やゲストブックなど、いろいろなcgiスクリプトを落としてきて使用されることもあるかと思います。このcgiスクリプトは大概の場合、JISコードでページを作成することが多いです。このようなスクリプトを使用したとき先のAddDefoultCharsetをShift_JISの設定で使用すると間違いなくトラブルの元になります。 ご注意ください。
- togino
- ベストアンサー率75% (97/129)
abayama さんの回答で解決されると思いますが 今後のために Web の文字化けが起こる原因を詳しく説明させて頂きます。 まず日本語には主に ShiftJIS, JIS, EUC の3種類形式があります。 Apache 君は、ブラウザ(ここではIEとしましょう)IE君に、手紙(HTMLファイル)を渡すとしましょう。 Apache君は IE 君に手紙を渡す際 「この手紙は EUC で書かれているよ」 と説明しているのに、実は手紙の表面には 「この手紙は JIS で書かれてます」と書いてあり、 IE 君は疑いながら手紙を開けてみると、 実は ShiftJISで書かれていた! なんてことが、実際にあるわけです。このような時 IE 君が実際の形式と異なる形式を信じてしまうと 文字化けという現象が起こってしまいます。 そこで、管理者である Kyonkyon15 さんは こんなことが起こることのないようにちゃんと 調停しなくてはならないのです。 重要な点は「ブラウザは3箇所のヒントから日本語の形式を判断する」 という点です。 ・HTTP レスポンスでの charset ・HTML ヘッダでの charset ・実際のファイルの形式 ■ HTTP レスポンスでの charset httpd.conf の中で AddDefaultCharset を使うことで設定できます。 また AddType "text/html; charset=ISO-2022-JP" html とすれは、「拡張子 html のファイルは JIS 形式」 と拡張子ごとに設定することも出来ます。 ■ HTML ヘッダでの charset HTML の <meta> タグで指定できます。 例えば <meta http-equiv="Content-Type" content="text/html; charset="Shift_JIS"> を <head> タグの中に書いておけば 「この HTML は Shift-JIS 形式である」と主張 していることになります。 ■ 実際のファイルの形式 これはテキストエディタによりますが、秀丸や EmEditor など、上記3種類の形式を指定して 保存できるエディタを使う必要があります。 --- kyonkyon15 さんはこれらの3箇所を理解した上で Web サーバ管理者になって頂きたいと思いますっ。 がんばってください。
お礼
とても、親切な、説明を書いてくださり、 ありがとうございます。 無事、日本語で表示されるようになりました。 今、WEB系での言語開発を勉強するために、 それに関する部分で、APACHE等も 勉強中なのですが。なかなか難しいです・・・。 頑張って勉強したいと思います。
- abayama
- ベストアンサー率48% (38/79)
Windows版のApacheですよね。 でしたらApacheをインストールしたディレクトリの下にあるconfディレクトリ配下に、httpd.confというファイルがあって、この中に AddDefaultCharset ISO-8859-1 という行があります。これが「西ヨーロッパ言語」の原因ですので、 AddDefaultCharset shift_jis に修正後、Apacheのサービスを再起動してください。
補足
回答、ありがとうございます。 そうですね、windowsのapache2です。 httpd.confというファイルの行を、shift_jisに修正しました。そのあと、apacheをstopして、再度startさせましたが、文字化けが解消されないのですが、 何か、他に問題や、方法が、あるのでしょうか?
お礼
ありがとうございます!!! たしかに、 (1)AddDefaultの行をoffにして (2)キャッシュをクリアしてみたら、 無事直りました。 皆さんの親切な、アドバイスのおかげで、 初心者の私でも、無事、直すことができました。 どうも、ありがとうございます。 まだまだ、勉強することが多いですが、 頑張りたいと思います。