• ベストアンサー

HTTPプロトコルについて(文字化け。)

No.656466の質問「文字化け。」 で「サーバーの設定とは関係ありません。 」 と自身満々に回答してしまったものです。。。 (質問者の方には申し訳ない) 私はHTTPプロトコルはポート80にgetコマンドを送って 単にhtmlデータを受け取るだけだと勘違いしていたのですが No.656466の回答にapacheのconfファイルのAddDefaultCharsetを変更することで 文字コードの判定を行えるような事を書いてあったのですが apacheはAddDefaultCharsetをconfファイルで指定してやることで どういった動作をしてブラウザとやりとりしているのでしょうか? 宜しくお願いします。

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

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

apache-2.0 から,レスポンスヘッダに charset情報を出力するようになりました. ブラウザは,<META>タグよりも,ヘッダのcharset情報に従うことが推奨されていますが,文字化けするかどうかは,ブラウザ依存になると思います. # 個人的には,<META>タグに従って欲しいと思いますが… レスポンスヘッダを確認するには,telnet で80番ポートにつないで,コマンドのやりとりをしてもいいですが,w3mの-dump_headオプションなどを使うと簡単です.

sha-girl
質問者

お礼

charsetのヘッダ情報をhtmlデータとは別にブラウザが読み込むのですね。 getコマンドの後に引数をつける事でヘッダ情報を取得できました。 ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • fkimura
  • ベストアンサー率29% (27/92)
回答No.4

ああ。そういう風に解釈されましたか。それは申し訳ありません。ヘッダの内容に同内容を送りつけるという意味でいました。 もちろんmetaタグに書かれたものはそのままなので、文字化けしているページをブラウザのエンコードで自動にすれば解消するのは皆さんも把握済みのことだと思います(笑)

全文を見る
すると、全ての回答が全文表示されます。
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

> AddDefaultCharsetに指定がある場合にはサーバはその > 内容で送りつけてブラウザはそれを表示するのだと思います。 違います. ちょっと確認すればすぐにわかることですが,このディレクティブで指定されたcharset情報をHTTPのヘッダに吐くだけであって,HTMLの内容には何ら手をつけません. レスポンスヘッダとMETAタグのどちらの指定に従うか,はたまたどちらにも従わず自動検出を試みるかなどは,ブラウザの実装次第です.

全文を見る
すると、全ての回答が全文表示されます。
  • fkimura
  • ベストアンサー率29% (27/92)
回答No.2

sha-girlさんでしたら、検索で調べればわかってしまうとは思われますが、 http://httpd.apache.org/docs/mod/core.html#adddefaultcharset にあるように、通常はMETAタグに記述された文字セットによりブラウザは表示しますが、 AddDefaultCharsetに指定がある場合にはサーバはその内容で送りつけてブラウザはそれを表示するのだと思います。 AddDefaultCharset Off がデフォルトなのですが、httpd.confの初期で設定されてるデフォルトにiso-8859-1をつけて配布されているために、初心者泣かせな状態にあるといえます。 かつて、誰だったかがこれを変更して欲しいというたぐいの内容を書いたものを見たような気がしますが、依然としてそのままになっているようです。検索するとその理由も探せるかも知れませんね。

参考URL:
http://httpd.apache.org/docs/content-negotiation.html
sha-girl
質問者

お礼

ご回答ありがとうございます。 httpプロトコルに対して、根拠のない先入観みたいなものがあったようです。 色々と調べてみようと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • HTTPヘッダーがどうしてもISO-8859になる

    Apache2.2.4(ソースからインストール)を使っています。 以下の問題は,IEなら問題ありません。すべてFirefoxで見る場合のみです。 HTTPヘッダーに 「Content-Type: text/html; charset=ISO-8859-1」が 入ってしまい,metaヘッダーにどんなcharsetを指定しても FirefoxがISO-8859と解釈して,文字化けを起こします。 httpd.confには, AddDefaultCharset ISO-8859の行はありません。 しかし, AddDefaultCharset UTF-8や AddDefaultCharset none と指定しても,ヘッダーにcharset=ISO-8859-1が表示されることには 変わりなく,問題解決しません。 .htaccessファイルは一切使っていません。 この問題はCGIに関係なく,任意のファイルで発生します。 一体,なぜISO-8859がヘッダーに現れるのでしょうか。

  • apach 文字化け httpd.conf

    apach 2.0.49をインストールし、使用してますが、HTMLを出力すると文字化けします 日本語が文字化けします。 AddDefaultCharset iso-8859-1 も解除し、<html>のところを<html lang="ja">も変更し、 Apacheも Restartで再起動しても、駄目でした。 httpd.confの設定を以前、変更して文字化けが無くなった経験があるんですが、思い出せません。 誰か御存知の方がいらっしゃったら、教えてください。宜しくお願いいたします。

  • Apacheの文字化け

    使用環境 OS:Debian etch apache 1.3 この環境でApacheでウェブページを開設しました。しかし、デフォルトでは文字化けしてしまうのでAdddefaultCharsetをoffにしてみました。 それでも相変わらず文字化けしてしまいます。 しかし、エンコードの設定で日本語(自動選択)を選ぶと直りました。 しかし文字化けがデフォルトのままでは正直、良いとは思わないので これを直したいのですがみなさんはほかに何か心当たりはありませんでしょうか? ちなみにファイル転送にはSambaを通して転送しています。

  • Tomcat6 IE系のみ文字化け

    Tomcat6 IE系のみ文字化け 環境: Apache Tomcat 6.0.20 JDK 6 Update 18 Struts 2.0.14 文字コード:UTF-8 ある特定文字をGETパラメータで取得すると文字化けします。 例えば、「自分」、「僕」などです。 また、「ああああ」はOKなのに、「あああ」とすれば文字化けします。 それも、Internet Explorer系のみで、FireFox系は文字化けしません。 server.xmlのConnectorタグには、「useBodyEncodingForURI="true"」が指定されています。 現状下記の通りです。 --- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true"/> --- 原因がいまいちわかりません。 お助けいただけないでしょうか。

    • ベストアンサー
    • Java
  • 自宅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回、起動し直して試したのですが、やはり文字化けは直りませんでした。 なぜでしょう?? 何か忘れていますか。 また他にどのような設定をすれば文字化けを解消できると思われますか。 何か心当たりのある方、どうか教えてください。 よろしくお願いします。

  • サーバの字が文字化けします。

    redhat9+apache2でサーバを構築したのですが、 サーバ上でのファイル名が文字化けしてしまいます。 (apacheはソースからインストールしました) ツールバーの表示からエンコードを変更すれば 正しく表示されるのですが、 できれば最初から、文字化けしないようにしたいです。 何度か調べて、httpd.cnfの #AddDefaultCharset~や LangagePriority、 また、php.iniの mbstringなどを訂正したのですが、 変わらず西ヨーロッパ言語のままです。 わかる方いらっしゃいましたら よろしくお願いします。

  • htmiファイルの文字化け

    htmlファイルのメタタグを以下のように設定、ファイルの文字コードもShift_JISで保存し、 2つのサーバーへアップしたところ、片方のサーバー(hetemlのレンタルサーバー)では 文字化けせずに表示されるのですが、もう片方のサーバー(自前サーバー、CentOS)では 文字化けしてしまいます。 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> そこで文字化けする方のサーバーのhttpd.confの設定で AddDefaultCharset UTF-8 の部分をコメントアウトし、apacheを再起動したのですが、いっこうに文字化けが直りません。 この場合、何かほかの設定が影響してることなのでしょうか? ちなみに、文字化けするサーバーへ各ブラウザでアクセスしたところ 以下のように文字化けするブラウザとしないブラウザがあります。 FireFox 文字化け IE(9)  文字化けしない Chorome 文字化けしない ブラウザによって文字化けするしないの原因もよくわかりません。 どなたか、ご教授いただけると幸いです。 よろしくお願いします。

  • htmlが文字化け

    掲題の件について質問させて頂きます。 linuxサーバ(CentOs5)を立ち上げて、apacheをインストールし、DocRootにhtmlファイルをFFFTPにてアップロードした所、文字化けが発生してしまいました。(画面が真っ白になります) 【環境】 Server: Apache/2.2.6 (Unix) mod_ssl/2.2.6 or_log PHP/5.1.6 【アップロードしたファイル内容】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>ここにタイトルを挿入</title> </head> <body> <form method="post" action="input_check.php" name="input_check"> <input type"text" name="name">お名前: <input type"text" name="furigana">ふりがな: <input type="submit" name="send" value="submit"> </form> </body> </html> ファイルはEUC-JPにて記述しています。 以下試した点をあげてみます。 1. charsetをShift_JISに変更。 ⇒ファイルがEUC_JPで書かれているので当然文字化け。ですが文字化けされた文字は表示されました。(画面が真っ白ではないです。) 2. apacheのhttpd.confのAddDefaultCharsetをコメントアウト ⇒(というよりデフォルトで設定されていませんでした。) 他に何か怪しまれる点はありますでしょうか? 以上宜しくお願い致します。

  • Apache2.2での文字化けが直せません

    Apache2.2.15をインストールし、「独習PHP」に従って設定をしたのですが、日本語が文字化けします。 httpd.confで変更したのは以下の部分です。 LoadModule php5_module "c:/php/php5apache2_2.dll" Addtype application/x-httpd-php .php (AddDefaultCharsetは、調べてみた所2.2系から使われてないらしいので、追加していません) php.iniの設定も間違いなく行いました。 また、<head>内に<meta http-equiv="Content-Type" content="text/html; charset=euc">などと埋め込んだりしてもだめでした。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • Apacheでの文字化けについて(LAN内)

    このたび、「FedoraCore4」を利用して自宅サーバ開設に挑んでいます。 いちおう全ての設定(公開に利用する)を終わり、さっそくテストでindex.htmlを書いてアップしてみました。 はじめに文字化けが発生していましたので、 > conf/httpd.conf 内の、 AddDefaultCharset UTF-8 の部分を改善し、サーバ機から閲覧した場合の文字化けは直りました。 しかし、クライアント側から閲覧したら文字化けになってしまっています。 もしかしてインターネット側からも文字化けに・・・ と思い、携帯電話からアクセスしてみたら大丈夫でした。 このように、LAN内からのクライアント機から見た場合の文字化けに対しては どのように対処したらよいのでしょうか? ご存知の方がおりましたら、ぜひご指導をお願いします。