我有一个很大的 XML (>15Mb),我必须读取它、解析它并将一些值存储在数据库中。我的问题是,XML 的格式不同(UTF-8、ISO-8859-1)。
使用 UTF-8 没有问题。但是 ISO-8859-1 给我带来了巨大的问题!!标签带有特殊字符,XMLReader 和 readOuterXML() 无法正确解析这些字符
已经尝试过,但没有成功
$xml = new XMLReader;
$xml->open($import_file,'ISO-8859-1');
尝试过:
- utf8_encode
- mb_convert_encoding($stringXML, 'UTF-8' );
- iconv("ISO-8859-1", "UTF-8//TRANSLIT", $stringXML);
XML(简化)
- tag (id) --> 没问题
- tag (baños) --> 问题
xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
<id><![CDATA[5531]]></id>
<baños><![CDATA[0]]></baños>
</data>
他们都没有帮助我。
最佳答案
你的 php 内部编码是什么?您可以使用 echo mb_internal_encoding();
检查它。
如果是UTF-8,那么mb_convert_encoding($data, "UTF-8")
不会做任何事情,因为第三个参数$from_encoding
会是已经是“UTF-8”了。
您必须提供源编码作为函数的第三个参数。
所以也许这会成功:
//check which encoding the data has?
$encoding = mb_detect_encoding($data);
if($encoding != "UTF-8"){
//specify from which encoding to convert to utf-8
$data = mb_convert_encoding($data, "UTF-8", $encoding);
}
关于php - XML 解析 - PHP 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374310/