• 締切済み

ブラウザのエンコード 自動選択について

ブラウザが何を基準にエンコードを自動選択しているのか? 判断基準の一つに、metaタグを使ったcharsetでの指定があるかと思います。 EUCを指定する場合に、以下の様に記述してみました。 <meta http-equiv="content-type" content="text/html;charset=EUC-JP"> と、 <meta http-equiv="content-type" content="text/html;charset=EUC_JP"> ※EUC_JP EUC-JP "_"と"-"の差です。(アンダースコアとハイフン) です。 (EUC_JPと記述した場合) 別々のPCで同一のブラウザ(IE6)を使用し表示させるも、白紙の画面と正常画面と差が出ます。 charset=EUC_JP は、間違いで、charset=EUC-JPが正解という所までは辿り着いたのですが、殆どのブラウザでは、EUC_JPでも表示されます。IEも含めて。 表示されない側では、 charset=EUC_JPにしていると、ブラウザがエンコードをShift_JISに自動設定するため表示が空白になってしまうようです。 それもバージョンも同じブラウザ間での差です。 ブラウザ(IE)の設定は見る限り同じです。(エンコードは、自動選択) 結果的には、charset=EUC-JPにて解決済みですが、 EUC_JPでも問題なく表示できていたのは、何故なのでしょうか。

  • HTML
  • 回答数5
  • ありがとう数4

みんなの回答

  • quads
  • ベストアンサー率35% (90/257)
回答No.5

EUC_JP だと Shift_JIS として認識されるというのは結果論です。 不明だからとりあえず Shift_JIS としてパースしているだけです。 とりあえず何で表示させるかはそのときの環境によって変わります。 もしかしたら、そのページの前に見たページの文字コードを適用させるかもしれません。 ブックマークに入っていたものをいくつか挙げておきます。 http://www.tohoho-web.com/wwwkanji.htm http://www.tohoho-web.com/wwwxx005.htm http://itpro.nikkeibp.co.jp/members/NNW/NETPOINT/20020219/1/ http://www.atmarkit.co.jp/fjava/rensai3/mojibake01/mojibake01.html 同じ環境なのに結果が異なったのは、同じようにサイコロを振ったのに違う目が出たというのと同じようなものです。 尤も、ブラウザによっては文字コードの自動識別に関するアルゴリズムがあるかもしれません。

takumi_CL
質問者

お礼

ご回答、ありがとうございます。 不明だからShift_JISでパースした。これは、正解だと思います。 しかし、不明だからShift_JISなのか、不明でもEUCになるブラウザも あります。 ブラウザ自動選択がEUCだと思ったのでEUCにしたと思いたいのですが、 その理由が見つかりません。 ちなみに前のページの文字コードでは無いようです。 EUC_JPでは、ブラウザの自動判別エンコードでは、 EUCとして、認識されないはず。されてもそれは偶然位の事でしょうか。 同一バージョンのブラウザ間で、アルゴリズムが違うというのも考えにくいと思いますが、 なにか学習機能みたいなことであれば、判断基準が違っても不思議ではないですね。 > 同じ環境なのに結果が異なったのは、同じようにサイコロを振ったのに違う目が出たというのと同じようなものです。 何度やっても、ダメなPCはダメ、正常に見えるPCは、見える という結果では、ありました。 ご回答、ありがとうございました。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★タグの順序です。 ・META タグより前に TITLE タグがり、そこが SJIS と判定されると  『EUC_JP』と指定しても SJIS コードになります。 ・今度は試してみました。その結果、『EUC_JP』は無視されているようです。 ・TITLE タグが META タグよりも上でも『EUC-JP』と指定すると正常に  『EUC-JP』コードとして判定します。確認済み。 ・以上。おわり。

takumi_CL
質問者

お礼

エンコード判定順序の試験までして頂き、感謝します。 「EUC_JP」は、TITLEタグより前に書いていました。 なので、「EUC_JP」記述のHTMLが、Shift_JISだと理解される理由が、 分からないということです。 度々のご回答ありがとうございます。

noname#24096
noname#24096
回答No.3

EUC-JPとshift_JISて、ややこしいんですよね。 Webとは関係ないですが UNIX、Linux系の言語設定では、 「EUC_JP」と書くのが正解だったりして 私も以前、混同してハマったことがあります。 答えにならないかもしれませんが 参考になりそうなURLを。。 http://sb.xrea.com/archive/index.php/t-3657.html http://oshiete1.goo.ne.jp/kotaeru.php3?q=1449083 一つ気になったのは >別々のPCで同一のブラウザ(IE6)を使用し表示させるも、白紙の画面と正常画面と差が出ます。 この時に、それぞれキャッシュをクリアしてから表示させてますか? (つまり比較のする際に全く同じ条件か?ということです)

takumi_CL
質問者

補足

UNIX、Linux、DB絡みでは、"_"で正解な為、 ついこのような記述になってしまったと思います。 また、これで表示されなければ、記述ミスだと即気付けたのですが、 10台の確認で、2台程度が空白表示になったという結果でした。 そのせいで、EUC_JPが不正確だと言う事に気付かずにおりました。 METAタグ自体は、何よりも前に記述していましたので、 charset=EUC_JPが、何故Shitf_JISと判断されたのか、理由が分からずにいます。 ご回答、ありがとうございました。

  • key-child
  • ベストアンサー率54% (25/46)
回答No.2

送られてきた文字のコードがEUC-JPとして判定されたからじゃないでしょうか。 EUC_JPはおそらく無視されてます。

takumi_CL
質問者

補足

ご回答ありがとうございます。 確かにおっしゃられるとおりかもしれません。 しかし、同一バージョンのIEであるにも関わらず ダメな方は質問で書いたとおり、自動選択でShift_JISに設定するのです。 片方のブラウザでは、表示されないので、何故だろうと思ったのでした。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★単純にブラウザが賢いとか。 ・『EUC_JP』の文字列を自動的に『EUC-JP』と同じ扱いに解釈してくれる  賢いブラウザさんかも。 ・人間の入力ミスなどを見込んだ機能かも知れません。 ・それ以外は、私には考えられません。 ・以上。おわり。

takumi_CL
質問者

お礼

同一バージョンのブラウザ間で差が出る為に疑問に思ったのでした。 この差が無ければ、もう少し問題の絞りようもあったのですが。 ご回答ありがとうございました。

関連するQ&A

  • エンコードの自動選択の件 

    EUCでTeraTermからLinuxWebサーバへ送信しているので、 ブラウザのエンコードがEUCになるように <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">と htmlページで<head></head>間に挿入したのですが、 どうも、自動選択でブラウザが、「日本語(EUC)」 を認識しません。この教えて!Gooも確か、 日本語(EUC)だったと思いますが、ちゃんとブラウザで 認識されております。 私のサーバーに問題があるのでしょうか? それとも、<meta>タグがこれだとまだ足りないのでしょうか? サーバーは関係ないとどこかで聞いたことがあるんですが。 どなたかご存じの方、アドバイスお願いします。

    • ベストアンサー
    • HTML
  • エンコードの自動選択について

    この機能って何を元に自動で選択をしているのでしょうか?サーバーにあげて見てみるとプログラムによってシフトJISを選択する場合とEUCを選択する場合があって困っています。シフトJISが選択されると表示されません。(EUCを指定すると見えますが。) 過去の質問を参考にして <META http-equiv="content-type" content="text/html; charset=EUC-JP"> を追加してみたがシフトJISが選択されて表示されませんでした。どうか教えてください。

    • ベストアンサー
    • PHP
  • エンコードの自動選択について

    この機能って何を元に自動で選択をしているのでしょうか?PHPで作ったプログラムをサーバーにあげて見てみるとプログラムによってシフトJISを選択する場合とEUCを選択する場合があって困っています。シフトJISが選択されると表示されません。(EUCを指定すると見えますが。) 過去の質問を参考にして <META http-equiv="content-type" content="text/html; charset=EUC-JP"> を追加してみたがシフトJISが選択されて表示されませんでした。どうすれば誰でも見れるようになりますか?

  • ジオシティーズで作るのならeuc-jp?

    yahooジオシティーズでHPを作る際は、絶対に <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> ってやらないとうまくひょうじできないのでしょうか? <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> をしないでIEで表示しようとすると文字化けしてしまいます。

    • ベストアンサー
    • HTML
  • 文字コード変更による、文字化け・レイアウト崩れ

    文字コードをShift-jisからEUC-JPに変更したいのですが、 HTML・CSSに処理を施したら文字・レイアウトが大幅に崩れてしまいました。 以下のように変更したのですがやり方に間違いはないでしょうか? [HTML] <meta http-equiv="Content-Type" content="text/html; charset=Shift-jis"> ↓↓ <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> [CSS] @charset "shift_jis"; ↓↓ @charset "euc-jp"; また、ブラウザの表示⇒エンコードで(Shift_jis)を選択すると今までどおり正常に表示されます。(HTMLとCSSにはeuc-jpの記述にも関わらずです) これは文字コード変更したと思い込んでしまっているのでしょうか? 解決策お願いします。 あまり知識がありませんので、分かり易く教えていただけるとありがたいです。 ちなみにエディタはHTML Project2を使用しています。

  • HTMLのソースの文字化けを防ぐ方法

    Win2000とIE6.0の環境であるサイトを開き →エンコード→「自動選択」、もしくは  「日本語(EUC)」 →ソースの表示 とやっても文字化けします。 文字化けしないようにソースを開きたいです。 この問題について対処法が分かる方がおりましたら、お返事頂ければ嬉しいです。 ちなみに、開いたソースの <META http-equiv=Content-Type content="text/html; charset=EUC-JP"> は読み取れます。

    • ベストアンサー
    • HTML
  • 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
  • charset=UTF-8なのにShift-JISになっちゃいます!

    <META http-equiv=content-type content="text/html; charset=UTF-8"> と記述して、ブラウザ(IE6)で確認したのですが真っ白な画面になり、ブラウザのエンコードを確認した ところShift-JISになっていました。自動選択にしてもShift-JISになってしまいます。 UTF-8でどうしてもウェブを作りたいのですがエンコードがShift-JISにならない方法を教えていただけないでしょうか? 使っているエディタは秀丸です。

    • ベストアンサー
    • PHP
  • ブラウザが文字コードを誤判別する

    PHPでフォームを含むHTMLを出力しています。 POSTを使ってページ移動すると、ブラウザが文字コードを誤判別します。 表示が文字化するのではなく、ブラウザのエンコードが誤判別され、POSTで次ページに移動するとPOSTされる文字列だけが文字化けします。 リンクによる移動では、誤判別しません。 php.iniの設定 default_charset = Shift_JIS mbstring.internal_encoding = EUC-JP mbstring.http_output = Shift_JIS PHPのソースは、EUC-JPで書いています。 出力するHTMLには、 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/> をヘッダーに記述しています。 この現象は100%発生するわけではなく、完全にランダムです。 確実な再現手順はありません。 ブラウザは、WinXP Pro SP2 + IE6.0 です。 ブラウザの不具合でしょうか?

    • ベストアンサー
    • HTML
  • CGI.pmのstart_htmlで思い通りのMETAタグを出せない

    CGI.pmのstart_html()を使用してMETAタグを出力しようとしているのですが、思うように出力できません。 具体的には次の文字列と全く同じものを出力しようとしています。 <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> いろいろやってみたのですが、どれも微妙にこれとは違うのです。 どなたか教えてください・・・。 今のところ、これに最も近かったのは、 print($q->start_html(-head => $q->meta({"-http-equiv" => "Content-Type", -content => "text/html; charset=EUC-JP"}))); で、これの出力(METAタグ部分)は、 <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> でした。 お尻にスペース1個とスラッシュが付加されてしまいます・・・

    • ベストアンサー
    • Perl

専門家に質問してみよう