带有重音符号的Unicode在日志记录中引发UnicodeDecodeError(App Engine)

时间:2011-11-12 20:35:37

标签: python google-app-engine logging unicode utf-8

我正在尝试更改旧的appengine应用程序,但现在在格式化我的电脑并安装更新的工具后,日志记录功能会引发unicode错误。

在之前的开发环境中,一切正常。     ubuntu 9.04     python2.6的     google appengine sdk 1.5

现在我正在尝试使用此环境进行更改:     ubuntu 11.10     python2.7     google appengine sdk 1.6

在这个新的开发环境中,我使用日志记录功能会出错。

logging.info(u'Gerando lista de exibição') # error

错误:

  

'ascii'编解码器无法解码位置22中的字节0xc3:序数不在范围内(128)         args =('ascii','Gerando lista de exibi \ xc3 \ xa7 \ xc3 \ xa3o',22,23,'ordinal not in range(128)')        encoding ='ascii'        结束= 23        message =''        object ='Gerando lista de exibi \ xc3 \ xa7 \ xc3 \ xa3o ......'        reason ='序数不在范围内(128)'        start = 22

要工作,我需要删除重音:

  

logging.info(u'Gerando lista de exibicao')#ok

我的编辑器是utf-8,我的所有脚本都将“编码:utf-8”作为第一行。

这是一个版本问题?有一些设置要做吗?

3 个答案:

答案 0 :(得分:3)

这是一个错误:

http://code.google.com/p/googleappengine/issues/detail?id=6266

希望在下一版本(1.6.1)中更正。

答案 1 :(得分:0)

您可以尝试在unicode and utf-8编码上查看此页面。战略和解决方法也包括在内。这是一个众所周知的问题,因为Python 2默认编码是'ascii'。

答案 2 :(得分:-1)

Python 2默认情况下不使用UTF-8作为源代码,否则您必须指定编码。见PEP-263

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

无论如何,在源代码中保留Unicode并不是一个好主意。