[英]XML character encoding issue with PHP
我有创建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 ???
请尝试直接在脚本中放入'á','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- encoding.php
您使用的是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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.