スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

charset=UTF-8がIEで対応していない件について

というわけで、今回はcharset=UTF-8がIEシリーズで対応していない件に
ついて調べてみました。もう共有テンプレートやプラグインを作成するに当たって

「ま た あ な た で す か ?」

と思うぐらい何度もいろいろな試練を与えてくださった「IEシリーズ」ですが、

今回はFC2の多言語用テンプレート・・・

要約すると世界へ向けて公開するFC2共有テンプレートの配布に向けて文字コードを
変更しないと世界では文字化けする危険性があるのではないかな~?
と考え全世界対応の文字コードを使用しようとしたのですが・・・

(今回のお話と直接関係はありませんが、FC2共有テンプレートはデフォルトで全世界公開は
文字コードの観点や制作者の考えからいって宜しくないと思います。
日本圏の文字コードと英語圏の文字コードでは当然差異が発生すると考えるのが
妥当でしょうから・・・)

今回はそんな中でおこったHTML&CSSの文字コードでの問題です。詳細は続きから
【はじめに~やるべきこと~】

というわけで、全世界に対応する文字コードといえば一番最初に思いつくのが
「UNICODE」ですよね。

今回はHTMLやCSSに埋め込むということで実用性を考慮した「UTF-8」を使用しようとしました。

~文字コードとは?~
自分たちが打ち込んでいる英数字などには文字コードによりひとつひとつ
割り当てられた数字があります。例えばASCIIと呼ばれるコードではアルファベットの
Aは「65」Bは「66」というように文字や記号一つ一つに割り当てられた固有の数字のこと。

自分たちが扱っている「A」や「B」などは文字列上で「A」や「B」などと見えているだけであり、
実際のコンピューター内では全て文字は番号で表されています。

~UNICODEとは?~
全世界の文字を共通の記法で表現しようと策定された文字コード
(ゼロックス社が提唱し、マイクロソフト、アップル、IBM、サン・マイクロシステムズ、ヒューレット・パッカード、ジャストシステムなどが参加するユニコードコンソーシアムにより作られた)

~UTF-8とは?~
UTF8はUnicodeをエンコード(符号化)(圧縮)する方法(規格)の一つ。デコード(復元)する際に負荷の高い処理が必要でないため、現在ではHTMLなどでも幅広く使われるようになりました。

世界的な流れでいうと文字コードは「Unicode」に対応という風潮になっていると考えて
ほぼ間違いはないと思います。



というわけで自分の制作した共有テンプレートのHTML&CSSに対応させるために、
まずはHTMLの方の文字コードの宣言を「charset=EUC-JP」から
「charset=UTF-8」に変更・・・

変更前
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"  />

変更後
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />



他にもIE6では文字コードの宣言の前に日本語がきたりすると正しく動作しない場合があります。
(下記のような例)
<html>
<title>日本語</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />


この問題を解決するためには文字コードを日本語より前に記入する必要があります。
(下記のように)
<html>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>日本語</title>

上記のようなトラブルが文字コードでは起こりやすいので文字コードの宣言は
HTMLの最初の方に行ってくださいと主にいわれています。



これだけでは、HTMLとCSSでは文字コードの違いにより読み込むことができない
自体になる可能性もあるので、CSSの”一番最初の行の宣言”に以下の一行を記入

@charset "UTF-8"

ちなみに上記のCSSでの文字コード宣言はCSSの一番最初に行わないと
上手く動作しない可能性があります。



さてさて、これで無事英語圏との対応はするようになるはずですね♪(テンション↑)
と思いテンプレートの修正ボタンをクリック・・・


しかし、この認識こそが今考えれば甘かったと思います・・・


自分は忘れていました・・・


Wepページ制作者にとって最もいろいろな不可思議な現象が起こる
あの”例のブラウザ”の存在を・・・


文字コードを変更してみた後に、HTMLとCSSの文字コードを変更した後に全てのブラウザで
表示確認をしてみました。

IEシリーズは自分はインストールはしていないので、IEtesterと呼ばれる歴代の
IEのバージョン(IE5.5, IE6, IE7, IE8)で
回覧確認が出来るツールを使用して、各IEでの回覧チェックをしてみました。

そこで、初めてこの文字コードでの表示状態を確認することが出来ました・・・




CSSの方に@charset "UTF-8"を指定していない場合

IE7での回覧
まともですね



IE6での回覧
何これ?文字化け


なんじゃこりゃ・・・・(;゚д゚)



夢ならさめてくれ・・・(;゚Д゚) (゚Д゚;) (;つД⊂)ゴシゴシ




CSSの方にも@charset "UTF-8"を指定したバージョン

IE6
何これ?

IE7
もう、意味が・・・


(;゜д゜)そんな・・・


ご覧のように最初の方のIE6とIE7は
@charset "UTF-8"宣言時の方はIE6ではカラム落ち+文字化け状態で、
IE7の方では正常に回覧されています。



しかし、CSSの方にも正しく@charset "UTF-8"を設定した方には
IE6での回覧時は文字化けこそは起こしませんが、文字自体のフォントが適用されていない
(日本語だから?)+カラムが落ちた状態

IE7の方ではカラム構造などは維持されていますが、文字自体は全体的に
文字化けが起こるといった状態でした。

そして、不思議なことに同じテンプレートでもIE7では文字化けが起こったり起こらなかったり、
その時々によって微妙に症状が変化したりしました。

これは、FC2共有テンプレートでの公開上のトラブルなのかは知りませんが、
とにかくどちらも不可思議な現象です。

IE6ではこのように文字コードが読み込まれてはいるが、
CSS自体がまともに動作しないというようになってしまいました。

ちなみにFIrefox&Operaではどちらも文字化けもカラム落ちも起こらずに、
正常に回覧されました。

というわけで、以下IE文字コードでの仕様について調べてみました。





【IEでの文字コードに関する仕様について調べてみた】


これは調べてみたところマイクロソフトのIEの使用解説ページで説明されていました。http://support.microsoft.com/kb/413581/ja

上記のことを重要部分のみを要約すると。

・IEでは、HTMLで文字コード宣言がある場合はその宣言の文字コードを使用する

・HTMLで文字コード宣言がない場合は、「エンコード」メニューでのユーザーが
最後に選択した文字セットが使用される


・「エンコード」でユーザーが最後に選択したのが「自動選択」でだった場合、
IEは表示可能な様々な文字セットの中から、そのページを表示するのに 適切と思われる
文字コードを自動的に選択する


・「エンコード」でユーザーが最後に選択したのが「日本語(自動選択)」であった場合、
 IEはJIS、Shift_JIS、EUCのいずれかから、もっともそのページを表示するのに適切と
思われる文字コードを自動的に選択する(なんと、UTF-8が候補に上がっていない!)



IEでは上記のようにプログラム上定義されているため、UTF-8がまともに使用されるかどうかは
正直かなり怪しい・・・よくあるパターンがIEが勝手に「Shift_JIS」などと解釈してしまったり
することがIEではよくあるというのは上記のことが定義が原因だったのですね。


前回のIEのバグのCSSの解釈で、

「floatと同じ方向にmarginをしてしまった場合はmarginの数値が 二倍になる」

完全なIEのプログラミングミスだとしても、今回の文字コードの仕様では
いったいIEは何を考えていたんだろう?と不思議に思うぐらいです。





【具体的な解決策】


具体的な解決策についてですが、未だ思案中です。
もしかしたら現状でも英語圏のブラウザでもまともに回覧されているのかもしれませんしね・・・

現在の自分が作成させていただいたテンプレートは日本語に完全に対応しているのは
確認済みですが、英語圏に正式に対応しているかどうかまでは未確認です。

といっても・・・殆どの日本のテンプレート作者はデフォルトでいきなり世界公開設定になったの
ですから、未確認&考えてもいないかもしれないことかもしれませんが・・・

FC2さんはそこら辺のことを考慮したのかどうか・・・何せデフォルトで世界公開の
状態になっているのですから・・・もし、FC2の共有テンプレートで文字化けが多発すれば
FC2共有テンプレート自体の評判も海外で落ちてしまいますから、
そのような浅はかな考えでは無いと願いたいですね。

この文字化けに関するトラブルが自分の杞憂で済めばよいのですが・・・

とりあえず、急を要するわけではありませんのでしばらくいろいろと模索してみたいと思います。





【面白い着眼点~考察~】


ここで一つ面白い注目点があるのですが、コンピューター業界の最初の方に
「Unicodeを世界共通の文字コードにしよう!」と定評し始めたゼロックス社の参加プロジェクトに
「マイクロソフト社」も加わっているというところです。

このように定評を始めた張本人の一つの大手会社である「マイクロソフト」がIEのプログラミングで
今回のように実用性が高いといわれている「UTF-8」のコードがマイクロソフト社のIEでは、
なぜここまで扱いづらい(UTF-8が候補に上がっていない)解釈で設定されているのでしょうか?

単に考慮が足りない状態で、このようなプログラミングをしたのか・・・

例を出せば、他にその時代背景や周りの何らかの事情がありUTF-8をわざと
使いづらくしたプログラミングを行ったのか・・・

調べてみると、いろいろと面白いことがわかりそうですね^^
コメント

ん~、、、、またIEですか。ぁ~、、、、このあたりまで、IEは期待を裏切らない親切設計になっているのですね^^;

本当に、”興味深い”ブラウザですよね~^^;

・・・。

ハァ(*´д`;)…

ところで、UTF-8の推奨を始めたのがゼロックスだったというのは知りませんでした。文字化けについては、おそらくEUC-JPのままでも大丈夫だとは思いますが・・・。

まぁ、でも、最近ではUTF-8の方が色々と融通が利くことが多いみたいなので、できればそちらの方が良さそうなんですけどね。

そうですね。

>アンタレスさん

>このあたりまで、IEは期待を裏切らない親切設計になっているのですね^^;
本当に、”興味深い”ブラウザですよね~^^;

そうですね~。本当に”興味”がたえないといいますか・・・目を背けることが出来ない・・・といいますか・・・

UTF-8は、調べてみると多くはやはりIEでのサポートがネックになっているようですね。なんとなく予想通りでしたが・・・

UTF-8はYahooなどのポータブルサイトでも使われていますが、
あれは、CSSの記述をHTMLと一緒に書くことによって可能になるということですからね。

それにしても英語圏での表示が確認のしようがないのが
一番厳しいというのが現状です。

とりあえず、色々と模索してみたいと思っていますよ。

それにしても、FC2さんは他の共有テンプレートの作者の許可を取らないでいきなり今回は全世界公開となりましたが、FC2さんは大丈夫なのでしょうかね~・・・

対応していないテンプレートが出回ればかえってFC2共有テンプレートの海外での評判が宜しくない方に傾くと思いますが・・・

承認待ちコメント

このコメントは管理者の承認待ちです

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
コメントの投稿
管理者にだけ表示を許可する

トラックバックURL

-

管理人の承認後に表示されます
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。