我试图解析与外籍的XML文件(OSM数据),并有一些Unicode字符行的是外籍无法分析:

<tag k="name"
v="абвгдежзиклмнопр�?туфхцчшщьыъ�?ю�?�?БВГДЕЖЗИКЛМ�?ОПРСТУФХЦЧШЩЬЫЪЭЮЯ" />

<tag k="name" v="Cin\x8e? Rex" />

(在开口线XML文件的编码是 “UTF-8”)

文件是很老,而且一定是错误的。在现代的文件我没有看到UTF-8的错误,他们被解析的罚款。但是,如果我的程序符合一个破碎的符号是什么,我可以做什么解决方法吗?是否有可能加入BZ2的编解码器(I解析的压缩文件)和UTF-8编码解码器忽略破碎字符,或者改变它们为“?”?

有帮助吗?

解决方案

不知道“”字符被拷贝粘贴的字符串介绍到这里, 但如果你在原始数据有他们的话,好像是发电机 问题,其引入\ uFFFD本地字符为:

“用于代替进入的字符,其值是未知的或 不可表示以Unicode“

这citied: http://www.fileformat.info/info/unicode/char/ FFFD / index.htm的

解决方法?用于扩展只是想法:

good = True
buf = None
while True:
if good:
        buf = f.read(buf_size)
        else:
        # try again with cleaned buffer
        pass
        try:
            xp.Parse(buf, len(buf) == 0)
            if (len(buf) == 0):
                    break
        good = True
    except ExpatError:
        if xp.ErrorCode  == XML_ERROR_BAD_CHAR_REF:
            # look at ErrorByteIndex (or nearby)
            # for 0xEF 0xBF 0xBD (UTF8 replacement char) and remove it
            good = False
        else:
            # other errors processing
            pass

或者干净输入缓冲器,而不是+拐角情况(在缓冲器端部分序列)。 如果Python的外籍允许指定自定义错误处理我不记得。 这将是容易然后

如果从'我的字符清洁你的样品它处理确定。 \ XD1不会失败。

OSM数据?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top