我正在尝试解析从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问题。
答案 0 :(得分:0)
由于UTF-8'(0xE2 0x80 0x99)是WINDOWS-1252,这正是您所描述的,似乎您将UTF-8编码的字符串加载为WINDOWS-1252。
从元素或属性读取时,SimpleXML的输出始终是UTF-8编码的,因此关于该部分,我认为代码没有问题。
因此,XML文件更有可能提示错误的编码。解决这个问题,你应该没事(因为你没有显示那个文件,很难说究竟需要改变什么,以及为什么编码首先混淆了,也许是一些转移问题)。
您可能需要在将XML文件发送到解析器之前对其进行重新编码。如果是这样,XMLRecoder
可能会有所帮助。
答案 1 :(得分:0)
您在这里使用冒号:charset: UTF-8
正确的代码是
header('Content-Type: text/html; charset=utf-8');
答案 2 :(得分:0)
检查您的XML文件是否以
<?xml version="1.0" encoding="UTF-8"?>