文字エンコーディング
PHPのXML拡張モジュールは、異なった文字エンコーディング
を通じてUnicode
文字セットをサポートします。ソースエンコーディング
およびターゲットエンコーディング
という2種類の文字エンコーディングがあります。
PHP におけるドキュメントの内部表現は、常に
UTF-8でエンコードされます。
ソースエンコーディングは、XMLドキュメントが
構文解析された際に行わ
れます。XML パーサの
作成を行う際に、ソースエンコードを指定することができます。
(このエンコーディングは、その XML パーサーが存在する間、後で変更す
ることはできません)サポートされるソースエンコーディングは、
ISO-8859-1, US-ASCII ,
UTF-8 です。前の二つは、シングルバイトエンコー
ディングです。これは、各文字がシングルバイトで表現されることを意
味します。UTF-8 は、1から4バイトの可変ビット
数(最大21ビット)で構成された文字をエンコードすることが可能です。
PHP で用いられるデフォルトのソースエンコーディングは、
ISO-8859-1です。
ターゲットエンコーディングは、PHPがデータをXMLハンドラ関数に
渡す時に行われます。あるXMLパーサが作成された際、ターゲットエン
コーディングは、ソースエンコーディングと同様に設定されます。
しかし、これは、いつでも変更可能です。ターゲットエンコーディング
は、タグ名と同様に文字データに作用し、命令を処理します。
XML パーサがソースエンコーディングが表現できる範囲の外側の文字に
出会った場合、エラーが返されます。
解釈するXMLドキュメントにおいてPHPが文字に出会った際に、選択した
ターゲットエンコーディングで表現できない文字に出会った場合、問題
の文字は "降格" されます。現在、このことはこのような文字が疑問符
で置換されることを意味します。