【问题标题】:Xml error: Wrong charset?Xml 错误:错误的字符集?
【发布时间】:2013-01-18 14:27:16
【问题描述】:

我正在尝试使用 DOMDocument 通过 php 生成一个 xml 文件。但是那里有一些“奇怪”的字符,所以它给了我一个编码错误。 error on line 2 at column 81: Encoding error.

我正在尝试将[0.3e](¯``·._.·[name]·._.·´¯) 放在那里。

我是这样解析的

header( 'content-type: text/xml' );
$domTree = new DOMDocument( '1.0', 'UTF-8' );

最后是echo $domTree->saveXML();

输出如下:

<?xml version="1.0" encoding="UTF-8"?>
<server><errors/><info><value>0</value><value>25</value><value>30</value><value>[0.3e](

希望你能帮我告诉我我在这里做错了什么或使用哪个字符集。

大卫

【问题讨论】:

  • 你从哪里得到 xml?
  • 我从游戏服务器检索信息。奇怪的字符是服务器名称的一部分。
  • 抱歉,这不是我的意思,我的意思是显示代码你是如何得到它的
  • 是的,你需要知道响应的编码是什么,在这种情况下它不是 UTF-8。

标签: php xml encoding character-encoding domdocument


【解决方案1】:

您可能需要强制对输入字符串进行编码,并将任何剩余的实体转义为 HTML 实体:

$enc = mb_detect_encoding($text);
$text = @mb_convert_encoding($text, 'UTF-8',$enc);      
$text = htmlentities($text,ENT_IGNORE,'UTF-8');

【讨论】:

  • error on line 2 at column 94: Entity 'macr' not defined 完全复制了代码。将 $text 更改为 $value
  • XML 没有定义 html 实体
【解决方案2】:

无论您从何处获取数据,都不会以 UTF-8 格式提供给您。我假设它是 Windows-1252,但我可能是错的。

header( 'content-type: text/xml' );
$domTree = new DOMDocument( '1.0', 'Windows-1252' );

【讨论】:

    【解决方案3】:

    在 xml 节点中使用 CData 部分!

    【讨论】:

    • 我看到这个被否决但我很好奇为什么这是错误的? (没有测试。)
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 2013-04-14
    • 2022-10-13
    • 2013-06-25
    • 1970-01-01
    • 2014-11-27
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多