我正在研究一个Python脚本,该脚本读取用UTF-8编码的XML文件,对其进行一些操作并将其保存到Google的数据存储区(它是一个App Engine程序)。
我正在阅读和解析文件的方式只是使用file.readline()和一些正则表达式。唯一的问题是我正在使用的文件中包含许多不同语言的字符,例如,它可能有é或Å或俄语或希腊字符。
我最初得到这样的错误:“UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd0:序数不在范围内(128)。”然后我尝试将打开的文件上的编码切换为“ISO-8859-15”,它消除了错误,但输出的字符没有正确显示。
所以我的问题是:如何在Python中使用UTF-8编码的文件,而不会让Python卡在文件中的所有特殊字符上?我希望这很清楚,并提前感谢任何建议。
答案 0 :(得分:4)
在str.decode
>>> print '\xe2\x99\x9e'.decode('utf-8')
♞
这应该是一个国际象棋棋子,但它太小了,无法看到:)
答案 1 :(得分:1)
您说您将使用该文件的编码更改为ISO-8859-1。您是否尝试将其更改为UTF-8?
答案 2 :(得分:0)
要扩展答案并参考effbot,您可以像这样处理每一行:
raw = file.readline()
proc = raw.decode('utf-8')