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が文字に出会った際に、選択した ターゲットエンコーディングで表現できない文字に出会った場合、問題 の文字は "降格" されます。現在、このことはこのような文字が疑問符 で置換されることを意味します。