【发布时间】:2015-01-03 19:27:20
【问题描述】:
这个问题困扰了我好几天。我遇到了字符编码问题,我花了很多时间研究和阅读 Stack Overflow 问题,但我还没有找到解决方案。
所以我有一个 XML 文件,在那个文件里面有一组类似这样的标签:
<item name="purchase" date="November 12 2014 02:27:48">
<airline>Aero Test Ltd</airline>
<aircraft>Boeing 747-400</aircraft>
<engine>Rolls-Royce RB211-524H2-T</engine>
<config>5 25 40 560</config>
<value>261430000</value>
<name>None</name>
</item>
从网页,用户可以更改飞机的名称(<name> 标签)。该名称通过 XMLHttpRequest 发送到我的 PHP 页面,该页面应创建一组新的标签,如上述,并将名称记录在 mySQL 数据库中。
它可以正常使用常规英文字母文本。当我尝试使用名称“Corvina Panameña”时,ñ 遇到了一些问题。
它将这组标签添加到我的 XML 文档中(就像它应该的那样):
<item name="renaming" date="January 03 2015 04:34:38">
<airline>Aero Test Ltd</airline>
<aircraft>Boeing 747-400</aircraft>
<engine>Rolls-Royce RB211-524H2-T</engine>
<config>5 25 40 560</config>
<value>227852883</value>
<name>Corvina Panameña</name>
</item>
并且 DOMDocument 将ñ 编码为&#xF1,根据我的研究,这是它应该做的。当我在 chrome 中打开文件时,它会显示字符。
我有 3 个其他网页,其中 2 个使用来自 mySQL 数据库的数据。这些 mySQL 数据页面之一显示字符,然后是问题:另一个显示此字符组合:ñ。两个页面都具有 HTML5 Doctype,并且没有在 <meta> 标记中定义的字符集。
第三个网页使用 XML 数据。奇怪的是,它显示的字符组合与第二个 mySQL 页面相同:ñ。该页面使用 HTML5 Doctype,并且没有在 <meta> 标记中定义的字符集。
如何解决这个奇怪的问题?
是不是类似这样的问题: http://www.glenscott.co.uk/blog/html5-character-encodings-and-domdocument-loadhtml-and-loadhtmlfile/
这是我添加标签组的 DOMDocument 过程:http://codepad.org/dHdiY5wG
用于读取数据的DOMDocument过程:http://codepad.org/ATpkZq4H
完整的 XML 文件:http://codepad.org/XnN9ahuc
-编辑-
ini_set("default_encoding", "UTF-8") 和 htmlentities 没有帮助。
-编辑 2-
在数据上使用utf_encode() 也没有帮助。
-编辑 3-
看起来好像是由 XMLHttpRequest 发送的发布数据是问题所在,而不是 XML。
此数据已发送:Corvina Panameña
这是收到的:Corvina Paname&Atilde;&plusmn;a
【问题讨论】:
标签: php xml character-encoding domdocument