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 将您的数据转储到 HTML 文档中,并将元标记设置为 UTF-8,并查看字符是否正确显示。

您也可以致电:

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

并查看 PHP 为您的数据检测到什么编码。

如果您无法转换数据库中的数据或更改其设置,您可以使用mb_convert即时进行:http ://www.php.net/manual/en/function.mb-convert-编码.php

于 2013-02-13T14:28:08.540 回答
0

您正在使用 utf-8,即 8 位 unicode 编码格式。即使它正确支持 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 回答