【问题标题】:PHP-DOMDocument Character Encoding IssuePHP-DOMDocument 字符编码问题
【发布时间】: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>

从网页,用户可以更改飞机的名称(&lt;name&gt; 标签)。该名称通过 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 将ñ 编码为&amp;#xF1,根据我的研究,这是它应该做的。当我在 chrome 中打开文件时,它会显示字符。

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

第三个网页使用 XML 数据。奇怪的是,它显示的字符组合与第二个 mySQL 页面相同:ñ。该页面使用 HTML5 Doctype,并且没有在 &lt;meta&gt; 标记中定义的字符集。

如何解决这个奇怪的问题?

是不是类似这样的问题: 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 没有帮助。

-编辑 2-

在数据上使用utf_encode() 也没有帮助。

-编辑 3-

看起来好像是由 XMLHttpRequest 发送的发布数据是问题所在,而不是 XML。

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

【问题讨论】:

    标签: php xml character-encoding domdocument


    【解决方案1】:

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

    【讨论】:

    • 这是您的解决方案的结果:&lt;name&gt; Corvina Paname&amp;Atilde;&amp;plusmn;a&lt;/name&gt;
    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2019-07-08
    • 2010-10-23
    • 2019-11-17
    • 2013-01-29
    • 1970-01-01
    相关资源
    最近更新 更多