Php 如何正确解码XML文件中的特殊字符?
在我正在解析的一些XML文件(通常是RSS)中,我遇到了一些包含字符的文本,例如Php 如何正确解码XML文件中的特殊字符?,php,xml,unicode,character-encoding,libxml2,Php,Xml,Unicode,Character Encoding,Libxml2,在我正在解析的一些XML文件(通常是RSS)中,我遇到了一些包含字符的文本,例如今天最新的,它正在成为今天的样式™从节点提取文本后,将显示最新的。这说明我没有正确处理解码过程 我可以简单地修复这一个bug,但如果有许多其他字符变得乱码呢?在将XML文件转换为UTF-8脚本时,在不破坏编码的情况下对其进行摘要的正确方法是什么 以下是我尝试过的一些似乎不太有效的方法: $xml = file_get_contents($file); // One: still contains ’ //$xm
今天最新的,它正在成为今天的样式™从节点提取文本后,将显示最新的
。这说明我没有正确处理解码过程
我可以简单地修复这一个bug,但如果有许多其他字符变得乱码呢?在将XML文件转换为UTF-8脚本时,在不破坏编码的情况下对其进行摘要的正确方法是什么
以下是我尝试过的一些似乎不太有效的方法:
$xml = file_get_contents($file);
// One: still contains ’
//$xml = @iconv('UTF-8', 'UTF-8//IGNORE', $xml);
// Two: LibXMLError Entity 'rsquo' not defined
//$xml = htmlentities($xml, null, 'UTF-8');
//$xml = htmlspecialchars_decode($xml, ENT_QUOTES);
// Three: still contains ’
//$xml = mb_convert_encoding($xml, "UTF-8", "UTF-8");
$xml = simplexml_load_string($xml, null, LIBXML_NOCDATA | LIBXML_NOENT);
尝试一下:
$xml=simplexml_load_string($xml,null,LIBXML_NOCDATA | LIBXML_NOENT);
$xml->addAttribute('encoding','UTF-8')代码>检查如何输出内容。
如果输出目标不支持UTF-8,也可能发生这种情况
我假设您将输出到浏览器,所以请检查浏览器编码并尝试显式地将其设置为UTF-8,因为您可能从XML中获得正确的文本,但它只是显示错误
如果上面没有帮助,还可以尝试加载XML,检查如何输出内容。如果输出目标不支持UTF-8,也可能发生这种情况。我假设您将输出到浏览器,所以请检查浏览器编码并尝试显式地将其设置为UTF-8,因为您可能从XML中获得正确的文本,但它只是显示错误。如果上面没有帮助,还可以尝试用DOMDocument加载XML@zysoft,解决了问题™代码>问题!由于XML越来越大,我停止使用CLI进行调试,转而使用浏览器。我真不敢相信我忘了检查我的标题<代码>标题('Content-Type:text/html;charset=“UTF-8”)代码>@Xeoncross,我将把它作为答案发布。很高兴它帮助了你<代码>标题('Content-Type:text/html;charset=“UTF-8”)代码>