text/htmlのXHTML(1.0)文書のデフォルトの文字エンコーディングは

XML宣言とDOCTYPE宣言 - vantguarde - web:gをきっかけにXHTML Media Types - Second Editionを見て、XHTML Media Types(FE, SE)のtext/htmlの項とXHTML 1.0 SEやXHTML Media Types FEのHTML互換性ガイドラインはデフォルトの文字エンコーディングの点で矛盾があるのでは、と思いました。

  • XHTML Media Types(FE, SE)のtext/htmlの項(これをAとする)ではまた、制作者は文字エンコーディングに関する問題についても注意すべきである。「XHTML 文書は XML 文書であるから、明示的に文字エンコーディングが宣言されていない場合には、UTF-8 ないし UTF-16エンコードされているものとして扱うべきである」というのは典型的な誤解である。この文言は、XHTML 文書が text/html として提供されている場合には適切ではない*1...(Authors should also be careful about character encoding issues. A typical misunderstanding is that since an XHTML document is an XML document, the character encoding of an XHTML document should be treated as UTF-8 or UTF-16 in the absence of an explicit character encoding information. This is NOT the case when an XHTML document is served as 'text/html'....)などと言っている
  • XHTML Media Types(SE)のHTML互換性ガイドラインの処理命令とXML宣言の項(これをBとする)では、文書にXML宣言が含まれず文字エンコーディングがHTTPのようなより高いレベルのプロトコルで指定されていないとき、文書はデフォルト文字エンコーディングUTF-8UTF-16だけを使うことが出来る...などと言っている (Remember, however, that when the XML declaration is not included in a document, AND the character encoding is not specified by a higher level protocol such as HTTP, the document can only use the default character encodings UTF-8 or UTF-16. XHTML 1.0 SEではHTTPなどを考慮していない文言)

なのでデフォルトの文字エンコーディングを仮定するべきでないというAとUTF-8/UTF-16で書けるというBで矛盾しているのではないか、という。

追記 (2008-05-28, 北村さん(id:kits)へ)

text/htmlではデフォルトcharsetを仮定すべきでない(RFC 2854)、という話と、XML文書ではUTF-8/UTF-16がデフォルト(XML仕様)、という話だと思う。

はてなブックマーク - kitsのブックマーク / 2008年5月26日

それについては異論ありませんが、ではHTML互換性ガイドラインが仕様(XHTML 1.0 SE, XHTML Media Types SE (Editor's Draft, 2008-04-23))の言うように文書をHTML UAでもレンダリングしたい文書作成者のための設計ガイドラインだとして、何故HTML(text/html)には適用されないルールを何の注釈もなしに記述しているのでしょうか。HTML互換性ガイドラインを特に参照する文書作成者に対して「HTML(text/html)として扱われるXHTML文書でも、XML宣言を省略したり文字エンコーディングを明示しない場合にはUTF-8UTF-16で書けば何の問題も無い」といった認識を誘わないでしょうか?(というのは自分が誤読した経験があるからなのですが…)

追記 (2008-06-02, 北村さん(id:kits)へ)

確かにcrndさんの引用箇所(Remember, however, that ...)に注目すると「UTF-8, UTF-16で書ける」という話にとれなくもないですが、そのもう少し前からの文章の流れを読むと、そもそもこの箇所は「XML処理命令・XML宣言を省略する」ということが主題となっているものと思います。見出しも Processing Instructions and the XML Declaration となっていますし。

文字エンコーディングについて、text/htmlの事情とXMLの事情 - 徒書

Processing Instructions and the XML Declarationに対して自分は「XML仕様またはXMLとして扱われる文書として」という前提が弱いような印象を持ったので(HTML互換性ガイドライン全体が「HTMLとして扱うXHTML文書として」という前提を持っている印象が強いのもあり…)、XML処理命令・XML宣言を省略する」ということが主題となっていても「XML仕様、XML文書としてはこうだよ」と範囲を狭めて述べているといまいち受け取れなかった、というのが今回の疑問に繋がっていました。

互換性を考慮するにあたっては、単にHTMLの側の事情のみを考えるのは不十分で、XML側の事情にも配慮してはじめて互換が達成できるわけですから、「XML宣言を外す」という命題において「XML側ではこのような事情がある」という点に言及することは、やはり必要なことだと思います。

文字エンコーディングについて、text/htmlの事情とXMLの事情 - 徒書

この点は全くその通りだと思います。仕様にはもう少しそれを明確に書いてもらえると…という希望を持つ自分は読解力が足りないのだと感じました。

*1:FEとSEで文言が同じなのでXHTML Media Types (ja)から引用