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

現在MTでサイトを運営していますが、Another HTML-lint gatewayというサイトをチェックするツールで自分のサイトをチェックしてみるのですが、以下のようなエラーが出てきてしまします。

XHTML1.0 では XML宣言をすることが強く求められています。 → 解説 21
XHTML1.0 では XML宣言中に encoding 指定をしましょう。 → 解説 137

これは一体何のことなのでしょうか?私自身あまり知識が無く、私なりに色々調べてみるのですが、<?xml version="1.0" encoding="UTF-8"?>を入れると解決できるらしいのですが、なにやら表示がおかしくなってしまいます。

なので結局解決に至らず、いまだにここの部分だけはどうしても解決法が分かりません・・・。

どなたかこのエラーを無くす方法をご存知の方いらっしゃいましたら、アドバイス頂けたら幸いです!

ちなみにサイトの補足としまして、ムーバブルタイプは設置型のもので、Movable Type 3.2-ja-2です。

また文字コードはcharset=shift_jisとなっております。
情報が不足しています場合、補足をさせていただきますので、お詳しい方宜しくお願いいたします。

A 回答 (8件)

訂正です。


前回の回答で、
<?php echo'<?xml version="1.0" encoding="<$MTPublishCharset$>"?>'; ?>としていましたが、

私の環境特有の設定で、html形式のファイル上で、phpが動作する特殊な環境設定に起因する問題でした。

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>と入力する事で、
UTF-8の文字コードであれば、問題なく表示されました。(検証済み)。

mt-config.cgiのPublishCharsetについては、
私の環境UTF-8 から Shift_Jis への変更も、
試しました。
 実稼動しているので、時間をかけることは出来ませんでしたが、
 既に入力済みのドキュメントは、動的に変更される事はなく、文字化けしました。

 既に入力済みで、xml宣言追加時に文字化けがあるのであれば、既に書いてある分は、エクスポートして、文字コード変換の上、インポートするなどの処置が必要と思います。

 トラックバックや、XMLを使うという点から見ると、
現状のShift_Jis よりは、UTF-8のデフォルトの文字コードがお勧めですが、それぞれ事情がありますから、、、。

 前回の回答がイレギュラーなものだったので、もう一度やってみました。お許しを、、、。
    • good
    • 0

#4です。


「XHTMLはUTF-8で記述しなければなりません」は誤りでした。
「XHTMLはUTF-8またはUTF-16が”デフォルト”」でした。すいません。
で、UTF-8またはUTF-16以外の場合は「encoding="文字コード"」の指定が必須となります。

#5の方がフォローしてくださってますが、
encoding="shift_jis"とすれば、正しく表示される気がします。
    • good
    • 0

こんにちは、私のMT-3.2-ja-2で試してみた結果お知らせします。



疑問1:どうしてshift_jisになっているんだろ。

utf-8でいいなら、mt-config.cgiというファイルを探して、line 270 をチェックしてください。
以下のところを確認、utf8でいいなら、utf-8にしよう。

# By default Movable Type uses the UTF-8 character encoding which
# supports an international range of characters. For some languages,
# though, UTF-8 is not he ideal encoding. Use the PublishCharset
# option to determine the character encoding that is sent in the
# HTTP headers.

PublishCharset utf-8

次に、XML宣言ですが、

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>

どうも、phpという言語で書いてあるようなので、上記のように普通に書くと、エラーになりました。

<?php echo'<?xml version="1.0" encoding="<$MTPublishCharset$>"?>'; ?>
不思議な事に、phpのコードをテンプレートにかけてしまうようなので、上記のように書くと、OKでした。

参考URL:http://www.odekake.biz/
    • good
    • 1

実際に文書を見てみないとわからないですね....


Ring サーバーの Another HTML-lint gateway で手持ちの文書をチェックしてみましたが, Shift JIS の文書に対して
<?xml version="1.0" encoding="shift_jis"?>
という XML 宣言をしておけば (少なくともそこについては) 問題ないですから....
ちなみに,
「XHTMLは、その内容をUTF-8で記述しなければなりません。」
というのは (少なくともこの部分だけを取り出すと) 間違いです. まあ, そのあとで「encoding="UTF-8" としてるのに Shift JIS で書いているのがおかしい」とあるので一応のフォローにはなりますが. XML 宣言で encoding を指定しておけば UTF-8 (あるいは UTF-16) でなくても本質的には問題ありません.
    • good
    • 0

XHTMLは、その内容をUTF-8で記述しなければなりません。

shift_jisで記述してはダメです。

encoding指定はCHARSETと同じようなものです。
つまり、encoding="UTF-8"として、UTF-8で書いていますと宣言していながら、
shift_jisで記述しているため文字化けが起きています。
    • good
    • 0
この回答へのお礼

有難う御座います。

>>XHTMLは、その内容をUTF-8で記述しなければなりません。shift_jisで記述してはダメです。

そうなのですか・・・、確か基本はUTF-8かUTF-16だったような気がしますが、それらが変更になった場合の為の<?xml version="1.0" encoding="sift-jis"?>宣言では無いのですか?

すみません、よく分からないのですが私はそう解釈していたのですが、必ずUTF-8じゃ無いと駄目ということになると、いろいろ制限が厳しそうですね・・・。

お礼日時:2006/09/18 21:33

「XHTML1.0 では XML宣言中に encoding 指定をしましょう。

→解説 137」
の方ですが, W3C のチェッカーではどうなります?
    • good
    • 0
この回答へのお礼

有難う御座います。

w3cのバリデータですよね?とりあえずこちらでは、最後の記述encodingに関しては、何も指摘が無いようです・・。

お礼日時:2006/09/18 17:35

分る範囲だけで。



<?xml version="1.0" encoding="UTF-8"?>宣言を入れるとIEで表示がおかしくなるのはIEのバグです。
要するにHTMLの構文チェックをされていてエラーが表示されてしまうとの事だと思うのですが、100点満点を目指さなくても、ちゃんと表示出来ていればOKだと思います。実際、各ブラウザごとにバグというかタグやCSS対応に不十分な所があるので、HTMLの構文に正しくかなっているからいい、という事ばかりでもありませんので。
(本当はバグがあるブラウザがいけないんですけど・・・・
    • good
    • 0
この回答へのお礼

有難う御座います。

・・・そうですかバグだったんですね。
それじゃあこれでOKということにしたいと思います。

もし他に何か対策や解決法があればご指導いただければと思います。
という事で、もう少しこの質問を開放させていただきますので、宜しくお願いいたします。

お礼日時:2006/09/18 17:17

> <?xml version="1.0" encoding="UTF-8"?>を入れると解決できるらしいのですが、


> なにやら表示がおかしくなってしまいます。
> ・・・
> また文字コードはcharset=shift_jisとなっております。

じゃあ
<?xml version="1.0" encoding="SHIFT_JIS"?>
ってしてみたらどうなるでしょう?
    • good
    • 0
この回答へのお礼

有難う御座います!!

早速試してみたのですが、cssに対してスイッチ?が聞いてしまうというか、なにやら表示がおかしくなってしまいます。

また
XHTML1.0 では XML宣言中に encoding 指定をしましょう。 → 解説 137
は、表示されたままなのですが、一体何がいけないのでしょうか??
引き続き宜しくお願いいたします。

お礼日時:2006/09/18 16:09

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