【发布时间】:2013-12-13 05:38:17
【问题描述】:
我正在使用 XMLReader 来解析来自第三方的大型 XML 文件,文件大小为 1GB+。 XML 文件将编码指定为 UTF8 (<?xml version="1.0" encoding="utf-8" ?>),尽管它不是。
XMLReader 由于未知的编码类型而引发错误,但直到它已经处理了大部分文件。
异常信息:
输入不是正确的UTF-8,表示编码
我已经确定文件的real编码是ISO-8859-1,如果我在调用$reader->open()的时候手动指定这个就可以了。
问题是我的脚本需要从数据库中解析未知文件,所以它需要依赖文件中指定的编码类型。我需要找到一种方法来解析任何文件,无论其编码如何,有什么建议吗?
【问题讨论】:
-
您必须在解析文件之前确认文件的编码。由于您几乎无法通过将文件读入内存来做到这一点,我想说您要么通过逐行读取并检查每一行来做到这一点,要么使用像
iconv这样的命令行工具来进行检查,而无需一次将其全部读入内存。 -
@deceze:感谢您的建议,我找到了Enca 并将使用它来检测编码。服务器是 Windows,所以我必须自己编译才能测试。
标签: php xml utf-8 character-encoding xmlreader