« 『もにょく〜ん』 | メイン | UTF-8 から他のエンコーディング方式に変えた場合に書き換えたいテンプレート »
2006年12月28日
[ Movable Type ] PHP と XHTML で...
Web ページ作成時,スクリプト言語である PHP を使いつつ,XHTML で記述すると問題が発生します.
問題が発生する理由
その理由を考えてみましょう.簡単です.
- XHTML は XML の応用言語であるため UTF-8/UTF-16 以外のエンコーディング方式を使う場合には
<?xml version="1.0" encoding="euc-jp"?>のようなXML 宣言が必要になる. - 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
コメント
よろしければコメントなどを...
サイン・インを確認しました、 . さん。コメントしてください。 (サイン・アウト)
(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)