PHP-DOMDocument字符编码问题

时间:2015-01-03 19:27:21

标签: php xml character-encoding domdocument

这个让我困惑了好几天。我遇到了字符编码问题,我花了很多时间研究和阅读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&#xF1;a</name>
</item>

DOMDocument将ñ编码为&#xF1,根据我的研究,它应该做什么。当我用chrome打开文件时,它会显示字符。

我有3个其他网页,其中2个使用来自mySQL数据库的数据中的数据。其中一个mySQL数据页面显示字符,然后显示问题:另一个显示此字符组合:ñ。这两个页面都具有HTML5 Doctype,并且没有在<meta>标记中定义的字符集。

第3个网页使用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

屏幕截图:http://imgur.com/a/ajiPG

- 编辑 -

ini_set("default_encoding", "UTF-8")htmlentities没有帮助。

-Edit 2 -

对数据使用utf_encode()也无济于事。

-Edit 3 -

似乎XMLHttpRequest发送的帖子数据是问题,而不是XML。

发送此数据:Corvina Panameña 这是收到的:Corvina Paname&Atilde;&plusmn;a

1 个答案:

答案 0 :(得分:0)

尝试使用$xml = new DomDocument('1.0', 'UTF-8');为xml文件设置UTF-8字符集编码,如果不够,请在将utf8_encode添加到xml之前使用名称字符串{{1}}文档。

相关问题