[PHP-users 3531] Re: xml_parseを使う場合の XML ファイルの文字コード
Ryuzi Kambe
php-users@php.gr.jp
Wed, 14 Nov 2001 17:24:45 +0900
> いえいえ、XMLドキュメントは全部 EUC ですよ。
>
> XML(EUC-JP) → [PHPで読み込み EUC-JP > UTF-8 ] → 続く
> [SourceEncoding UTF-8 > 内部表現] → 続く
> <<< Parser 構文解析 >>> → 続く
> [TargetEncoding 内部表現 > UTF-8 ] → 続く
> [ハンドラ内 UTF-8 > EUC-JP ]
となると、ひとつ疑問が出ます。
読み込ませるXMLファイルのXML宣言はどのようにしているのでしょうか。
http://www.w3.org/TR/REC-xml#NT-EncodingDecl
http://www.keiyu.com/doc/bxml2.htm
などによると、XML宣言が省略できるのは、文字コードがUTF-8か
UTF-16のときだけということになります。この場合ソースファイルは
EUC-JPなのでXML宣言は encoding="euc-jp" でなくてはならない
のではないでしょうか。
(PHPでこの処理を行う場合しか、このXMLファイルを使用しないと
言う前提なら、文字コードがEUC-JPで、XML宣言が省略、という
組み合わせもありなのかもしれませんが)
蛇足ながら、こんな解決方法はいかがでしょうか。
元のファイルでは encoding="euc-jp" としておいて、
PHPで読み込む際に、XML宣言を 取り除くか、UTF-8 のものに
置き換えれば、元のファイルもEUC-JPのXMLファイルとして
配布出来るので少しすっきりすると思うのです。
--
Ryuzi Kambe
kambe@mc.kcom.ne.jp