使用Python ElementTree解析Apple plist时的UnicodeDecodeError

时间:2018-05-11 11:34:17

标签: python xml python-3.x

我不确定我的问题是我的编程还是Apple的iTunes库导出问题,但我将首先假设它是我的编程。

我正在尝试解析从iTunes导出的XML库。解析的片段只是:

def parse_tree(source):
    parser = ET.iterparse(source)
   for action, elem in parser:
       # ...

导出我的库时,iTunes上的文件失败,错误:UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 886: character maps to <undefined>

XML标头是<?xml version="1.0" encoding="UTF-8"?>,XML的违规片段似乎是:

<key>Name</key><string>Part 2. The Death Of Enkidu. Skon Přitele Mého Mne Zdeptal Težče</string>

这可以通过iTunes,oXygen XML编辑器和我看到的Stack Overflow来呈现。但是HxD十六进制编辑器确实显示了0x8D,并在UTF-8中将其标记为未定义。 hex的相关位似乎是:

6C 20 54 65 C5 BE C4 8D 65 3C 2F 73 74 72 69 6E

这个iTunes是不是导出有效的UTF-8,Python的EventTree没有正确处理它,或者我做错了什么?如何让它读取元素的其余部分,跳过无法读取的字符或用缺省字符(例如问号)替换它?

编辑:操作系统是Windows 10.该文件是使用iTunes导出库命令直接创建的。

0 个答案:

没有答案