XHTMLについてお伺いします。


どこかでXHTMLは原則としてUTF-8で書くものだという文書か何かを読んだことがあり、僕は基本UTF-8で書くようにしています。

ただ、それがFirefoxユーザー向けならいいのでしょうが、どうもIE6ユーザーはたまにページを開いても、真っ白になってしまうようです。(ブラウザの文字コードを自動認識にすれば、表示される)

そのため、最近はUTF-8で書くのもためらいがちです。そこで、皆様にお伺いします。

①そもそも、XHTMLは原則としてUTF-8で書くものなのか?
②IE6対応のことを考えると、SHIFT-JISやEUC-JPのほうがよいのか?
③この問題に、ほかの解決策はあるのか?(ユーザーにFirefoxを勧めるとか、毎回IE6で文字コードを変えてもらう、というのはなしです)

以上、よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2007/01/05 16:30:24
  • 終了:2007/01/05 23:25:08

ベストアンサー

id:pmakino No.4

まきのっぴ回答回数355ベストアンサー獲得回数282007/01/05 19:47:21

ポイント22pt

①そんなことはありません。

HTML と同様に様々な文字コードが使用可能です。

ただし、XHTML の基礎となっている XML では、UTF-8 か UTF-16 の場合のみ最初の XML 宣言 (<?xml version="1.0" encoding="UTF-8"?>) を省略できるのですが、UTF-8 以外の文字コードを使う場合は XML 宣言を省略できません。(<?xml version="1.0" encoding="Shift_JIS"?> 等が必要)

しかし、この XML 宣言を書くと、

・Mac 版 IE 4.5 では HTML として解釈されずソースが表示されてしまう

・IE6 では標準モードではなく互換モードで表示されてしまう

といった不具合があり、これもいまいちですので、「XHTML では原則として UTF-8」というのもあながち間違いとは言えません。


②そのようなことはありません。


③実際のページを見てみないとなんともいえませんが、一般論としてお答えします。

まず一番良いのは、サーバ側で適切な HTTP ヘッダ (Content-Type: text/html; charset=UTF-8) をつけて送信することです。

が、通常は META タグの HTTP-EQUIV 属性できちんと UTF-8 であることを宣言すること (<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />) で十分です。(そのページの中で最初に使われる日本語文字列より先に書いておく必要があります)

ただし、META タグよりも HTTP ヘッダの方が優先されるので、サーバの設定が誤っていると、適切な META タグをつけていても文字化けする可能性があります。

サーバがどのような HTTP ヘッダをつけて送ってきているかは、Firefox の LiveHTTPHeaders 拡張を使うと簡単に確認できます。


> なぜIE6だけがこんなことになるのか

おそらく何かが誤っていて、Firefox や Opera では「たまたま」期待したとおりに表示できているだけなのだろうと思います。

実際に症状が起きているページの URL を教えていただければ有益なアドバイスができると思うのですが、それが難しければ、Another HTML-lint でチェックをかけると、解決のためのヒントが得られる可能性が高いと思います。


参考: 正しいHTMLのための若干の知識 - XML宣言と文字コード情報


ところで、そもそも XHTML である必然性はあるのでしょうか?

XHTML でなければできない何かの目的があるのならいいですが、そうでなければ HTML 4.01 を使っておくのが無難です。

id:aratako0

上記参考アドレスを読み、かつAnother HTML-lintもやってみました。間違いなく、titleの後ろで文字コードを指定しているでした。

皆さん、ありがとうございます。

2007/01/05 23:23:15

その他の回答(3件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/01/05 16:43:18

ポイント23pt

1.特にそのような決まりはありません。

ただ、XHTML のベースとなる XML では対応するアプリケーションは最低限「UTF-8」と「UTF-16」をサポートするように定められている為、UTF-8 で書いておいたほうが文字コードをサポートしていない可能性を減らせます。

http://www.atmarkit.co.jp/fxml/rensai/xmlwomanabou06/learning-xm...


2.3.は同一の方法で解決できるはずです。

そもそも Web ページで使用される文字コードは HTTP ヘッダーなどで提供するのがベストです。

これは場合によってはサーバーの設定を必要とするので代替手段として XHTML 中の meta タグにて指定する場合もあります。

http://www.mozilla.gr.jp/standards/webtips0022.html


また、これは理想論ではあるので各ブラウザが出来るだけ正確に判別できるように対策する事は可能です。

http://www.tohoho-web.com/wwwxx005.htm

id:aratako0

なるほど!

mozillaのサイトの「文字コード宣言より手前に日本語を書かない」に引っ掛かるのかもしれません。いつも、先にtitleを書いていたもので。

ありがとうございます。

2007/01/05 17:20:26
id:aminochang No.2

amichang回答回数20ベストアンサー獲得回数12007/01/05 16:44:50

ポイント23pt

文字コードをMETAタグのcontent要素で指定すれば自動エンコードで大丈夫だと思っているのですが、いかがでしょうか?

ただ、私の場合はHTML4.01ではありますが以下の理由でEUC-JPで書いております。

・VineLinuxの標準文字コードがEUC-JPだから

・PHPはEUCで書いたほうがよいと聞いたから統一している

・仕事でもEUCでコーディングしている

などです

ちなみに、W3Cの勧告では特に表記はありませんが、XHTMLの例ではUTF-8を使っていました。

また、文字コードの指定ではEUCを使用していました。

id:aratako0

meta自体はちゃんと指定しているはずなのです。

たぶん、上の方が紹介してくれたサイトの問題なのかもしれませんが、もし無理だったら、EUC-JPも検討せざるを得ないですね。(一度、EUC-JPで作ったサイトはうまくいっているみたいです)

あと、皆様にお伺いしたいのは、なぜIE6だけがこんなことになるのか、という点です。OperaやFirefoxではこういった問題は起こらなかったので。

2007/01/05 17:22:13
id:GEN111 No.3

GEN111回答回数472ベストアンサー獲得回数582007/01/05 17:39:29

ポイント22pt

meta 要素がダメならサーバーで設定するか、

.htaccess に

AddDefaultCharset utf-8

を書いてみるとか。

> なぜIE6だけがこんなことになるのか

XHTML なら XML宣言で

<?xml version="1.0" encoding="UTF-8"?>

のようにエンコード指定してあれば FireFox や Opera はそれに従うはずです。

id:aratako0

XML宣言はちょっとIE6のCSSのことを対処するとなると、しんどいので、あまり考えたくはないです。

ありがとうございます。

2007/01/05 23:19:28
id:pmakino No.4

まきのっぴ回答回数355ベストアンサー獲得回数282007/01/05 19:47:21ここでベストアンサー

ポイント22pt

①そんなことはありません。

HTML と同様に様々な文字コードが使用可能です。

ただし、XHTML の基礎となっている XML では、UTF-8 か UTF-16 の場合のみ最初の XML 宣言 (<?xml version="1.0" encoding="UTF-8"?>) を省略できるのですが、UTF-8 以外の文字コードを使う場合は XML 宣言を省略できません。(<?xml version="1.0" encoding="Shift_JIS"?> 等が必要)

しかし、この XML 宣言を書くと、

・Mac 版 IE 4.5 では HTML として解釈されずソースが表示されてしまう

・IE6 では標準モードではなく互換モードで表示されてしまう

といった不具合があり、これもいまいちですので、「XHTML では原則として UTF-8」というのもあながち間違いとは言えません。


②そのようなことはありません。


③実際のページを見てみないとなんともいえませんが、一般論としてお答えします。

まず一番良いのは、サーバ側で適切な HTTP ヘッダ (Content-Type: text/html; charset=UTF-8) をつけて送信することです。

が、通常は META タグの HTTP-EQUIV 属性できちんと UTF-8 であることを宣言すること (<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />) で十分です。(そのページの中で最初に使われる日本語文字列より先に書いておく必要があります)

ただし、META タグよりも HTTP ヘッダの方が優先されるので、サーバの設定が誤っていると、適切な META タグをつけていても文字化けする可能性があります。

サーバがどのような HTTP ヘッダをつけて送ってきているかは、Firefox の LiveHTTPHeaders 拡張を使うと簡単に確認できます。


> なぜIE6だけがこんなことになるのか

おそらく何かが誤っていて、Firefox や Opera では「たまたま」期待したとおりに表示できているだけなのだろうと思います。

実際に症状が起きているページの URL を教えていただければ有益なアドバイスができると思うのですが、それが難しければ、Another HTML-lint でチェックをかけると、解決のためのヒントが得られる可能性が高いと思います。


参考: 正しいHTMLのための若干の知識 - XML宣言と文字コード情報


ところで、そもそも XHTML である必然性はあるのでしょうか?

XHTML でなければできない何かの目的があるのならいいですが、そうでなければ HTML 4.01 を使っておくのが無難です。

id:aratako0

上記参考アドレスを読み、かつAnother HTML-lintもやってみました。間違いなく、titleの後ろで文字コードを指定しているでした。

皆さん、ありがとうございます。

2007/01/05 23:23:15
  • id:b-wind
    >なぜIE6だけがこんなことになるのか
    実際のページが分からないのでなんともいえないですね。

    この「はてな」も UTF-8 で構成されていますし、きちんと対処をする分には問題は無いはずです。
    どこかで、なにかが、間違っているのでしょう。
  • id:aratako0
    本当にありがとうございます。
    やっとこさ、長い間疑問だったものが解決しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません