4

XML を作成するコードがあります。私の唯一の問題は、á、olá、ção などの単語のエンコードにあります。
これらの文字は正しく表示されず、XML を読み取ろうとすると、その文字に関連するエラーが表示されます。

$dom_doc = new DOMDocument("1.0", "utf-8");
$dom_doc->preserveWhiteSpace = false;
$dom_doc->formatOutput = true;
$element = $dom->createElement("hotels");

while ($row = mysql_fetch_assoc($result)) {

$contact = $dom_doc->createElement( "m" . $row['id'] );

$nome = $dom_doc->createElement("nome", $row['nome'] );

$data1 = $dom_doc->createElement("data1", $row['data'] );
$data2 = $dom_doc->createElement("data2", $row['data2'] );


$contact->appendChild($nome);
$contact->appendChild($data1);
$contact->appendChild($data2);

$element->appendChild($contact);
$dom_doc->appendChild($element);

問題を解決するために何を変更できますか? utf-8 を使用していますか???

4

2 に答える 2

1

'á'、'olá'、または 'ção' をスクリプトに直接入れてみてください。

$data1 = $dom_doc->createElement("data1", 'ção');

問題がなければ、これはおそらく、間違ってエンコードされた mysql から取得したデータです。あなたのmysqlは正しいUTF-8を出力しますか?

それを知るには、PHP でメタ タグを UTF-8 に設定した HTML ドキュメントにデータをダンプし、文字が正しく表示されるかどうかを確認します。

次のように呼び出すこともできます。

$data1 = $dom_doc->createElement("data1", mb_detect_encoding($row['data']));

PHP が検出したデータのエンコーディングを確認します。

データベースからデータを変換できない場合、またはその設定を変更できない場合は、mb_convertを使用してその場で行うことができます: http://www.php.net/manual/en/function.mb-convert- encoding.php

于 2013-02-13T14:28:08.540 に答える
0

8ビットのUnicodeエンコーディング形式であるutf-8を使用しています。Unicodeの1,112,064個のコードポイントすべてを適切にサポートしていますが、ここで問題が発生する可能性があります。
UTF-16を標準として試してみてください。これは単なるアイデアです。下記参照:

$dom_doc = new DOMDocument("1.0", "utf-16");

また

$dom_doc = new DOMDocument("1.0", "ISO-10646");
于 2013-02-13T14:05:48.410 に答える