[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