【发布时间】:2012-12-21 12:04:01
【问题描述】:
在开发/本地机器上运行的 Python 代码,但在安装到 Appengine 后失败:
我的文件中的第一行:
# -*- coding: utf8 -*-O
代码后面的行:
s1 = u'Ismerőseid'
logging.info (s1)
s2 = s1 + u':' + s1
logging.info (s2)
logging.info ("%s,%s", s1, s2)
在开发(本地主机)中:
INFO 2012-12-18 04:01:17,926 AppRun.py:662] Ismerőseid,
INFO 2012-12-18 04:01:17,926 AppRun.py:664] Ismerőseid:Ismerőseid
INFO 2012-12-18 04:01:17,926 AppRun.py:665] Ismerőseid,Ismerőseid. Ó,
安装/运行后在 App Engine 上:
I 2012-12-21 06:52:07.730
É, Á, Ö, Ü. Ó,
E 2012-12-21 06:52:07.736
Traceback (most recent call last):
File "....", line 672, in xxxx
s3 = s1 + u':' + s1
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
我尝试过编码/解码/等的各种组合。我还对粘贴的字符串“Ismerőseid”进行了chardet,它给了我{'confidence': 0.7402600692642154, 'encoding': 'ISO-8859-2'}
非常感谢任何帮助!
【问题讨论】:
-
s1在 GAE 上不是 unicode;首先使用正确的编码将其解码为 unicode。 -
如果您在源代码中使用非 ASCII 字符,则必须在文件的第二行指定文件的编码(参见 stackoverflow.com/questions/728891/… )。 (你的本地机器设置了它的语言环境,使其假定 UTF-8 而不是 ASCII,这就是它在那里工作的原因,但你永远不应该依赖这种行为)
-
我的文件中有一个 # -- coding: utf8 --O。我假设该文件通过 App Engine 运行的方式与我通过 ${GOOGLE_APP_ENGINE}/dev_appserver.py 在本地机器(通过 eclipse)上运行它时的运行方式相同。无论如何感谢您的帮助!
标签: google-app-engine character-encoding python-2.7