【问题标题】:Php xml encoding issuephp xml编码问题
【发布时间】:2012-01-12 18:52:40
【问题描述】:

大家好,经过 5 个小时的研究并尝试了一切,我非常绝望,所以我写在这里。 我有一个来自第三方的 XML 文件。当我尝试使用SimpleXMLElement 解析它时,它只是说该字符串不是有效的 XML 格式,我还发现这是由于 XML 文件具有 ANSI 编码而发生的。我尝试将文件转换为 UTF-8 -> 它被解析器读取,但我所有的西里尔符号都丢失了,取而代之的是无意义的字符。 然后在记事本++中,我复制了内容,创建了一个使用utf8编码的文件并粘贴了内容->它很好,并被解析器读取。我试图用代码来做,但没有结果->我得到文件的内容,创建一个包含第一个字节的文件,UTF-8文件的字节,输出内容,当我打开它时->无意义的字符而不是西里尔字母。请帮助我,我真的需要将此文件转换为对 XML 解析器有效的 UTF-8,或者您能否告诉我另一种将文件从 XML 解析为数组的方法。

【问题讨论】:

  • 你应该早点想到 ;) 如果你在浏览器中打开 xml 文件会发生什么,你会得到一个解析错误吗?
  • 你知道原始文件是用什么编码的吗? iso8859-5?
  • 它没有在 chrome 和 IE9 中打开。记事本说编码是ANSI,我不知道……
  • 不能是 ANSI,ANSI 不支持西里尔字符。你能把原始文件上传到某个地方,让我们看看吗?

标签: php xml parsing encoding


【解决方案1】:

【讨论】:

  • 我忘了提到在 UTF-8 编码然后解码后数据丢失了......永远导致 ?????????我试过 iconv -> 你能更具体一点吗,也许我错过了什么。
  • 在输出工作文件时,尝试对需要正确输出的字符串使用utf8_decode()。试试吧,我认为你没有。让我知道它是如何工作的。另外,试试 iconv,试试 iconv('UTF-8','CP-1251',$string);或尝试 ISO-8859-5 而不是 CP-1251
  • 是的,我试过了,告诉你它会解码成 ?????...Wrong charset, conversion from UTF-8' 到 CP-1251' is not allowed。我猜xml文件坏了……
  • 尝试不同的字符集,也许是 KOI8 什么的。我认为 utf8_decode 会是一条更简单的路径
【解决方案2】:

你需要弄清楚原始XML文件的编码是什么,然后你可以使用iconv将其转换为UTF8。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
相关资源
最近更新 更多