Web Artisan Blog - ウェブ アルチザン ブログ

PHP5:DOM:saveXMLする際にエンコーディングを指定する方法

PHP (55 items)

2005年03月09日

XML宣言には、明示的にエンコーディング指定を記述したほうがいいでしょう。

<?xml version="1.0" encoding="UTF-8" ?>



で、PHP5のDOMでXML文字列を生成するには、saveXML関数を使用します。

$xml = $dom->saveXML();


しかしこのままでは、saveXML関数で生成されたXMLのXML宣言に、
エンコーディングが記述されません。

<?xml version="1.0" ?>



ちなみにPHP4のDOMでは、XML文字列の生成にdump_mem関数を用います。
これには引数にエンコーディング指定があったので、関数発行の際に指定できました。

$xml = $dom->dump_mem(true,"UTF-8");



で、どうするか?
簡単ですが、
DOMオブジェクトのエンコーディングプロパティに文字コードを指定すればOKです。

$dom->encoding = "UTF-8";
$xml = $dom->saveXML();


これで、XML宣言にUTF-8が明記されます。
ちなみにこの事は、PHPマニュアルには目立って記載されていないので、
意外と悩むかも知れません。


ところで、個人的な意見ですが、
PHP等でXMLを用いたプログラミングをする際は、
まずXMLをUTF-8ベースで定義し、
内部的にもUTF-8ベースで処理を行った方がいいでしょう。

もちろん、

$dom->encoding = "EUC-JP";
$xml = $dom->saveXML();


とできますし、

<?xml version="1.0" encoding="EUC-JP" ?>


EUCベースのXMLを生成する事も可能なんですが、、、

まず、XMLのデフォルトエンコーディングはUTF-8です。
そして、W3Cの規約にもUTF-8を使用することが推奨されています。

また、仮にEUC-JPベースでプログラミングした場合、
PHPであれば、mb_convert_encoding関数を用いて、
文字列のエンコード処理を至る所に記述しなければいけない可能性があります。
特に、XML内に日本語が混じるのであれば尚の事です。。

前の記事 次の記事

Comments

コメントは、まだ書かれていません

Add Comments

Trackback

トラックバックはありません

Trackback URL

http://www.res-system.com/weblog/action.php?action=plugin&name=TrackBack&tb_id=444