我正在从格式化为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);
答案 0 :(得分:0)
设法解决此问题,将其再次转换为UTF-8:
$content = iconv('UTF-8', 'UTF-8//IGNORE', $content);