【发布时间】:2012-12-29 14:46:06
【问题描述】:
我正在尝试解析一个 iTunes 媒体库文件,它是一个使用 python 和 plistlib 的 plist 文件。我写了一个简单的python脚本:
import plistlib
plist = plistlib.readPlist('tunes.xml')
print(plist['Tracks'])
但是当我尝试运行它时,第 3 行出现错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 21970: ordinal not in range(128)
我尝试使用 utf-8 编码加载文件转换为 bytearray 并使用 plistlib.readPlistFromBytes 但仍然出现错误
解决此问题的最佳方法是什么?
【问题讨论】:
-
哪个语句出现错误(上面提到的“第 3 行”)?你在什么环境下运行它? (OS X,Windows - 终端会话,IDLE)
-
print(plist['Tracks'])是发生错误的地方。我正在使用 Linux(Arch Linux)。 -
在 OS X + Python 3.3 或 2.7 上,您的代码无需编解码器支持即可直接运行。在 Python 2.6 下,我需要编解码器。我怀疑它在 Python / Linux 组合中......
标签: python python-3.x plist