我有创建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,我可以更改什么来解决我的问题?
发布于 2013-02-13 22:05:48
您正在使用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-13 22:28:09
请尝试在您的脚本中直接使用'á‘、'olá’或'ção‘。
$data1 = $dom_doc->createElement("data1", 'ção');如果没有问题,这可能是您从mysql获得的编码错误的数据。你确定你的mysql输出是正确的UTF-8吗?
要了解这一点,请让PHP将数据转储到一个将meta标记设置为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
https://stackoverflow.com/questions/14855340
复制相似问题