質問: shift-jisでxml宣言するべき? 独学でサイト作成に挑戦しています。 ネットと書籍しか知識を得る手段がなく、つまずくとなかなか進めません。どなたか教えて下さい。 現在の状況 xhtml 1.0 strictで記述 文字コードはshift-jis(windowsのメモ帳使用) ブラウザはintrenet explorer6のみ xml宣言ありである程度レイアウトを進めてきましたが、 >xml は文字コードのデフォルトが utf-8 で、その場合 xml宣言を記述しなくてもよく、それ以外の文字コードを利用する場合は、原則として xml 宣言に charset 記述が必要。ただし、xhtml1.0 の場合、仕様書の第2版で "上位のプロトコルで文字コードを指定すれば xml宣言はなくてもよい" となったそうです。 という記述を見て、xml宣言のありなしを悩んでいます。 ○できればie6でも標準準拠モードで表示させたい。 ○utf-8対応のエディタもいまいち分からないので出来ればshift-jisで記述したい。 今の状態から単純にxml宣言を消して表示させてみると全くレイアウトがちがうのですが、現在の表示が過去互換モード、標準準拠モードのどちらにスイッチされているか分かる方法はありますか? どなたか教えて下さい。お願いします。
回答: xhtmlで制作するつもりであれば、文法的にxml宣言はあった方がいいです。 その場合は xml version="1.0" encoding="shift_jis"?としてあげます これでsjisでの記述が可能です 問題は宣言した後の挙動についてなんですが、yoopingさんが感じているように、ie6ではドキュメントタイプ宣言より前に文字がある場合、後方互換モードになるバグがあります。 つまりxml宣言をすると強制的にie6の後方互換モードになってしまうわけですね それで何故レイアウトが全く違うのかというと、ie6の後方互換モードには、更にボックスモデルに対する解釈にバグがあり 幅にボーダーとパディングを含んでしまいます。 つまり標準準拠モードでcssレイアウトを行うと、根本的なボックスモデル解釈が異なる為、レイアウトが著しく崩れます。 これはie6のバグなので、firefoxなど比較的css準拠のブラウザで見た場合は問題ありません。 逆にieで問題ないように作成すると正常のレンダリングを行うブラウザではレイアウトが崩れます。 この対応策としては、widthとborderやmarginやpaddingを同時に指定しないという方法が一般的ですが、その状態でウェブ標準を突き詰めると幾つもの壁にぶちあたります・・・ なので、xml宣言を捨てて標準準拠モードで記述するか 頑張ってxml宣言をした状態で各ブラウザで標準表示されるようにするかといった選択になると思います。 趣味レベルでしたらxml宣言は気にしなくても大丈夫だとは個人的には考えてますが賛否両論でしょうね