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

6 投票
3 回答
2129 浏览
提问于 2025-04-17 06:11

我正在尝试对一个旧的应用程序进行修改,但在格式化我的电脑并安装了更新的工具后,日志功能出现了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' 编码无法解码字节 0xc3,位置在 22:序号不在范围(128)内 args = ('ascii', 'Gerando lista de exibi\xc3\xa7\xc3\xa3o', 22, 23, 'ordinal not in range(128)') 编码 = 'ascii' 结束 = 23 消息 = '' 对象 = 'Gerando lista de exibi\xc3\xa7\xc3\xa3o...' 原因 = 'ordinal not in range(128)' 开始 = 22

为了正常工作,我需要去掉重音符:

logging.info(u'Gerando lista de exibicao') # 可以正常工作

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

这是版本问题吗?需要做什么设置吗?

3 个回答

-1

Python 2 默认情况下并不使用 UTF-8 编码来处理源代码,如果你想用其他编码,就得自己指定一下。具体可以参考 PEP-263

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

总之,在你的源代码里使用 Unicode 其实不是个好主意。

0

你可以查看这个页面,了解一下unicode和utf-8编码的内容。里面还有一些解决方案和技巧。这个问题是个老问题,因为在Python 2中,默认的编码是'ascii'。

3

这是一个错误:

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

希望在下一个版本(1.6.1)中能修复这个问题。

撰写回答