2011-01-20 62 views
4

我正在研究Python脚本,该脚本读取以UTF-8编码的XML文件,对其进行一些操作并将其保存到Google的数据存储区(它是一个App Engine程序)。使用非ASCII字符在Python中执行文件I/O

我正在阅读和解析文件的方式只是file.readline()和一些正则表达式。唯一的问题是我正在处理的文件中有很多不同语言的字符,例如,它可能有é或Å或俄语或希腊字符。

我得到这样的错误起初:“UnicodeDecodeError:'ascii'编解码器无法解码位置0字节0xd0:序号不在范围(128)。”然后我试着将打开的文件上的编码切换到“ISO-8859-15”,这样可以消除错误,但输出的字符不会显示正确。

所以我的问题是:如何在没有Python的情况下使用Python中的UTF-8编码的文件处理卡住文件中的所有特殊字符?我希望这很清楚,并且提前感谢任何建议。

+0

你的模式和字符串被搜索的unicode字符串? – nmichaels 2011-01-20 21:28:26

+0

是的 - 因为我不用我的正则表达式搜索任何特殊字符。 – dshipper 2011-01-20 21:32:36

回答

4

指定的str.decode

>>> print '\xe2\x99\x9e'.decode('utf-8') 
♞ 

的UTF-8编码这应该是一个棋子,但它太渺小了,看看:)

0

要在答案和参考扩大到effbot你可以像这样处理每一行:

raw = file.readline() 
proc = raw.decode('utf-8') 
1

你说你改变了文件使用的编码为ISO-8859-1。您是否尝试将其更改为UTF-8?