php - XML 解析 - PHP 编码

标签 php html xml encoding utf-8

我有一个很大的 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/

相关文章:

php - mysql_field_table() 的错误结果

html - 相对包装器中的 CSS 中心内容

java - 使用 java 解析 xml 文件——基于 android 的应用程序

php - 根据对象属性从数组中删除重复项?

javascript - 从ajax请求获取警报

php - 全局禁用所有 MySQL 写入

html - 自动换行所有文本并使 div 适合 child 的大小?

html - 尝试为网站编辑 WordPress CSS 但找不到 CSS

java - 使用自己的类膨胀类 <unknown> 时出错

xml - 从两个不同内容之间的 XML 文件中获取数据