プロが教える店舗&オフィスのセキュリティ対策術

ブラウザが何を基準にエンコードを自動選択しているのか?
判断基準の一つに、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でも問題なく表示できていたのは、何故なのでしょうか。

A 回答 (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 …
http://www.atmarkit.co.jp/fjava/rensai3/mojibake …


同じ環境なのに結果が異なったのは、同じようにサイコロを振ったのに違う目が出たというのと同じようなものです。

尤も、ブラウザによっては文字コードの自動識別に関するアルゴリズムがあるかもしれません。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

不明だからShift_JISでパースした。これは、正解だと思います。
しかし、不明だからShift_JISなのか、不明でもEUCになるブラウザも
あります。
ブラウザ自動選択がEUCだと思ったのでEUCにしたと思いたいのですが、
その理由が見つかりません。

ちなみに前のページの文字コードでは無いようです。

EUC_JPでは、ブラウザの自動判別エンコードでは、
EUCとして、認識されないはず。されてもそれは偶然位の事でしょうか。
同一バージョンのブラウザ間で、アルゴリズムが違うというのも考えにくいと思いますが、
なにか学習機能みたいなことであれば、判断基準が違っても不思議ではないですね。

> 同じ環境なのに結果が異なったのは、同じようにサイコロを振ったのに違う目が出たというのと同じようなものです。
何度やっても、ダメなPCはダメ、正常に見えるPCは、見える
という結果では、ありました。

ご回答、ありがとうございました。

お礼日時:2007/01/13 01:20

★タグの順序です。


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

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

度々のご回答ありがとうございます。

お礼日時:2007/01/13 00:31

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)を使用し表示させるも、白紙の画面と正常画面と差が出ます。
この時に、それぞれキャッシュをクリアしてから表示させてますか?
(つまり比較のする際に全く同じ条件か?ということです)

この回答への補足

UNIX、Linux、DB絡みでは、"_"で正解な為、
ついこのような記述になってしまったと思います。

また、これで表示されなければ、記述ミスだと即気付けたのですが、
10台の確認で、2台程度が空白表示になったという結果でした。
そのせいで、EUC_JPが不正確だと言う事に気付かずにおりました。

METAタグ自体は、何よりも前に記述していましたので、
charset=EUC_JPが、何故Shitf_JISと判断されたのか、理由が分からずにいます。

ご回答、ありがとうございました。

補足日時:2007/01/13 00:32
    • good
    • 0

送られてきた文字のコードがEUC-JPとして判定されたからじゃないでしょうか。


EUC_JPはおそらく無視されてます。

この回答への補足

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

補足日時:2007/01/12 21:25
    • good
    • 1

★単純にブラウザが賢いとか。


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

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

お礼日時:2007/01/12 21:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!