0

我正在尝试解析从 Wordpress 的导出功能生成的 XML 文件。我已经从块中获取了文本,但是当我回显文本时它的格式错误,我认为是 ASCII。

<?php

header("Content-Type: text/plain; charset: UTF-8;");

$source = file_get_contents("blog.wordpress.2013-10-31.xml");

$xml = simplexml_load_string($source);

$items =  $xml->channel->item;

foreach($items as $item) {
    $namepsaces = $item->getNameSpaces(true);
    $content = $item->children($namepsaces['content']);
    if($content != '') {
        echo '#' . $item->title . "#\n";
        echo $content->encoded;
        echo "\n\n\n";
    }
}

所以As the BBC’s会变成As the BBC’s. 无论如何我可以阻止这一切吗?

编辑:我附加了 echo '“Test”'; 就在标题之后,我在浏览器中看到“测试”,所以这似乎不是 SimpleXML 问题。

4

3 回答 3

0

由于 UTF-8 ' (0xE2 0x80 0x99) 是 WINDOWS-1252 â € ™ 这正是您所描述的,因此您似乎将 UTF-8 编码的字符串加载为 WINDOWS-1252。

当您从元素或属性中读取时,SimpleXML 的输出始终是 UTF-8 编码的,因此关于那部分,我认为您的代码没有问题。

因此,XML 文件更有可能提示错误的编码。修复它,你应该没问题(因为你没有显示那个文件,很难说到底需要改变什么以及为什么编码首先混淆了,也许是一些传输问题)。

在将 XML 文件发送到解析器之前,您可能需要对其进行重新编码。如果是这样,可能会有所帮助。XMLRecoder

于 2013-10-31T15:34:43.743 回答
0

您在这里使用冒号:charset: UTF-8

正确的代码是

header('Content-Type: text/html; charset=utf-8');
于 2014-01-06T01:20:13.367 回答
0

检查您的 XML 文件以 <?xml version="1.0" encoding="UTF-8"?>

于 2017-12-12T21:25:55.673 回答