DOMDocument :: loadXML():输入的UTF-8不正确,表示编码

时间:2019-01-23 18:15:08

标签: php xml encoding

我正在从格式化为utf-8的数据库中生成XML文件并创建XML文件,但是在某些特定情况下,它无法正确转换并向我显示此消息:

DOMDocument :: loadXML():输入的UTF-8不正确,表示编码!实体中的字节:0x96 0x20 0x50 0x61,行:1

我已经尝试了所有可能的在线解决方案,例如iconv,尝试做正则表达式,但是这些都不能解决问题。 mb_encoding返回的是ASCII,据说是UTF-8,甚至检查了文件本身的utf-8。

这是我的文件开头,它从数据库加载变量$ xml_file的文件路径,使用utf8_decode解码来自数据库的所有输入。

<?php
$content = utf8_encode(file_get_contents($xml_file));
//$encoding = mb_detect_encoding($content);
//$myXMLString = file_put_contents($xml_file, iconv('WINDOWS-1251', 'UTF-8', file_get_contents($xml_file)));
$xml_doc = new DomDocument();
$xml_doc->formatOutput = true;
$xml_doc->preserveWhiteSpace = false;
$xml_doc->loadXML($content);
?>

这仅在某些项目上发生,因为其他项目可以正确生成,但是我找不到它们之间的任何特殊区别,也不是对此的永久解决方案。

我如何解决:

$ content = iconv('UTF-8','UTF-8 // IGNORE',$ content);

1 个答案:

答案 0 :(得分:0)

设法解决此问题,将其再次转换为UTF-8:

$content = iconv('UTF-8', 'UTF-8//IGNORE', $content);