今だけ人気マンガ100円レンタル特集♪

現在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となっております。
情報が不足しています場合、補足をさせていただきますので、お詳しい方宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qphpと

phpファイルの頭に<?xml version="1.0" encoding="utf-8"?>を入れると
Parse error: syntax error, unexpected T_STRING in ・・・
というエラーが出ます。
なぜでしょう?

Aベストアンサー

PHPは、
<?php ......?>
でも
<? ......?>
でもPHPのスクリプトと見なされます。よって、
<?xml version="1.0" encoding="utf-8"?>
の中の xml version.....はスクリプトとして認識されています。
こういう場合は、
<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?>
とすれば問題無くなります。

QShift-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 1.0 Strictで記述
文字コードはShift-JIS(Windowsのメモ帳使用)
ブラウザはIntrenet Explorer6のみ
xml宣言ありである程度レイアウトを進めてきましたが、

>XML は文字コードのデフォルトが UTF-8 で、その場合 XML宣言を記述しなくてもよく、それ以外の文字コードを利用する場合は、原則として XML 宣言に charset 記述が必要。ただし、xhtml1...続きを読む

Aベストアンサー

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宣言は気にしなくても大丈夫だとは個人的には考えてますが賛否両論でしょうね

XHTMLで制作するつもりであれば、文法的にXML宣言はあった方がいいです。
その場合は
<?xml version="1.0" encoding="shift_jis"?>としてあげます

これでSJISでの記述が可能です
問題は宣言した後の挙動についてなんですが、yoopingさんが感じているように、IE6ではドキュメントタイプ宣言より前に文字がある場合、後方互換モードになるバグがあります。
つまりXML宣言をすると強制的にIE6の後方互換モードになってしまうわけですね
それで何故レイアウトが全く違うのかというと、IE6の後方互換モードには...続きを読む

Qテーブルタグの中にdivを含めてはダメ?

テーブルタグの中にdiv要素を入れるとダメなのでしょうか?
何か不都合でもあるのでしょうか?
何かご存知の方がいれば教えていただけませんか?

Aベストアンサー

以下、HTML 4.01での話です。(XHTMLでもほぼ同じだと思います)

tableタグ直下に書けるのは、caption,col,colgroup,head,tfoot,tbodyと定義されています。
特定の条件下でtbodyが省略できますので、実際はtrも書けます。これら以外は書けないことになっています。
tr直下にはth,tdが書けることになっています(それ以外は不可)。

th,tdの下にはブロック要素が書けるので、divも書けます。

このように、テーブル内でth,tdの中以外でdivが使えないのはHTMLの仕様でそう決まっているからです。

QEclipseでのJDBCドライバについて

Eclipse3.1でデータベース(mysql)にアクセスするプログラムを作ったのですが下記のエラーが出ます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

これはJDBCドライバのセットアップがうまく出来ていないからなのでしょうか?
またEclipseでは、~.jarというファイルをプロジェクトのWEB-INFのlibフォルダに入れれば使える印象があるのですが、参考書(EclipseのではなくJAVAなどの)などにあるようにTomcatのインストールフォルダ以下common/libに入れて環境変数を変更しないといけないのでしょうか?

ご存知の方教えてください、よろしくお願いします。

Aベストアンサー

WEB-INF以下に入れると実行はできるのですが、エクリプスが.javaファイルをコンパイルすることができません。projectの一覧を右クリックしてpropertyを選択し、ダイアログ右側からJava Build Pathを選択し、タグからLibrariesを選び、Add JARsボタンをおして.jarファイルを登録して下さい。
たぶんこれでコンパイルできるはずです。

QSYSユーザーでログインしたい

SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
お願いします。

Aベストアンサー

>SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
特別なことする必要がないと思います。
ログインできない場合いろいろな原因が考えられます。
一番可能な原因は設定によってSYSユーザーNOMAL権限でログインできない場合あります。
この場合
sqlplus sys/パスワード@接続文字列 as sysdba
で試してください。


>SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
conn sys/パスワード@接続文字列 as sysdba

Qの意味

<?xml version="1.0" encording="utf-8"?>
の意味はどういう意味なのでしょうか?
また、これはどういうときに使うものなのでしょうか?
初歩的な質問ですみません。調べても出てこなかったので・・・
よろしくお願いいたします。

Aベストアンサー

「<?xml version="1.0"」
の部分ですがXMLファイルといって、ユーザーが独自に拡張出来るマークアップ言語と呼ばれるものを定義している部分になります。

「 encording="utf-8"?>」
の部分ですが、UTF-8と呼ばれる文字コードを定義している部分になります。

まとめると
<?xml version="1.0" encording="utf-8"?>とは、
XML形式で書かれた文字コードUTF-8の文章という意味です。

どうして必要かというと
ブラウザ等のソフトウェアは前から順番に、プログラムを実行していきますので
まず最初に、文章の種類と文字コードを定義する必要があるのです。

Qjavascriptでセレクトボックスの"selected"を動的につ

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select>月

<select name='day'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
<option value='14'>14</option>
<option value='15'>15</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
<option value='20'>20</option>
<option value='21'>21</option>
<option value='22'>22</option>
<option value='23'>23</option>
<option value='24'>24</option>
<option value='25'>25</option>
<option value='26'>26</option>
<option value='27'>27</option>
<option value='28'>28</option>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日


このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか?

よろしくお願いします。

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8...続きを読む

Aベストアンサー

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select>月

<select name='day'>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日
</div>
</form>

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<opt...続きを読む


人気Q&Aランキング