首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP的XML字符编码问题

PHP的XML字符编码问题
EN

Stack Overflow用户
提问于 2013-02-13 22:03:44
回答 2查看 776关注 0票数 4

我有创建XML的代码,我唯一的问题是像á,olá和ção这样的单词的编码。

这些字符不能正确显示,当我尝试读取XML时,会显示一个与该字符相关的错误。

代码语言:javascript
复制
$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,我可以更改什么来解决我的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-13 22:05:48

您正在使用8位unicode编码格式utf-8。尽管它正确地支持Unicode中的所有1,112,064个代码点,但这里可能存在一个问题。

尝试将UTF-16作为标准,这只是一个想法。如下所示:

代码语言:javascript
复制
$dom_doc = new DOMDocument("1.0", "utf-16");

代码语言:javascript
复制
$dom_doc = new DOMDocument("1.0", "ISO-10646");
票数 0
EN

Stack Overflow用户

发布于 2013-02-13 22:28:09

请尝试在您的脚本中直接使用'á‘、'olá’或'ção‘。

代码语言:javascript
复制
$data1 = $dom_doc->createElement("data1", 'ção');

如果没有问题,这可能是您从mysql获得的编码错误的数据。你确定你的mysql输出是正确的UTF-8吗?

要了解这一点,请让PHP将数据转储到一个将meta标记设置为UTF-8的HTML文档中,并查看字符是否正确显示。

您还可以调用:

代码语言:javascript
复制
$data1 = $dom_doc->createElement("data1", mb_detect_encoding($row['data']));

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

如果无法转换数据库中的数据或更改其设置,则可以使用mb_convert动态执行此操作:http://www.php.net/manual/en/function.mb-convert-encoding.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14855340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档