« 『もにょく〜ん』 | メイン | UTF-8 から他のエンコーディング方式に変えた場合に書き換えたいテンプレート »

2006年12月28日

[ Movable Type ] PHP と XHTML で...

Web ページ作成時,スクリプト言語である PHP を使いつつ,XHTML で記述すると問題が発生します.

問題が発生する理由

その理由を考えてみましょう.簡単です.

  1. XHTML は XML の応用言語であるため UTF-8/UTF-16 以外のエンコーディング方式を使う場合には <?xml version="1.0" encoding="euc-jp"?> のようなXML 宣言が必要になる.
  2. PHP のスクリプトは <? 〜 ?> または <php 〜 ?> でくくる必要がある.

つまり XML 宣言(<?xml 〜 ?>)を書くと,これを PHP側がスクリプトと勘違いしてしまい,その結果ページそのものが表示できなくなってしまうのです.

解決方法

XML 宣言を PHP スクリプトの echo を使って書くことで問題は解決します.たとえばエンコーディング方式が euc-jp の場合は次のように記述すればよいことになります.


<?php echo "<?xml version=\"1.0\" encoding=\"euc-jp\"?>\n"; ?>

元ネタは ここ にあるのですが,この提案だと改行されなくて気持ち悪いので \n を追加しました.

MovableType は XHTML でマークアップします.また,デフォルトで UTF-8 を使うため XML 宣言が省略されています.しかし,何らかの理由で euc-jp など他のエンコーディング方式を使う設定に変えた場合は,テンプレートファイルの一行目に XML 宣言を追加する必要があります.

わたしもこの設定をすっかり忘れていたのですが,ようやく修正しましたー.

投稿者 kanemiki : 2006年12月28日 06:37

トラックバック

このエントリーのトラックバックURL:
https://ss1.xrea.com/www.kanemiki.net/MT/mt-tb.cgi/464

コメント

よろしければコメントなどを...

サイン・インを確認しました、 . さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?


© 2004-2009 KaneMiki, All Rights Reserved.
本ブログの内容は,かねみきの個人的な見解・主張であり,わたしの所属教会や団体とは一切関係ありません.