Grabbed / Literal unicode在Google App Engine上的显示方式不同

时间:2012-01-12 09:02:47

标签: python google-app-engine character-encoding

在下面的代码中,我有两个unicode。第一个是从一个用GB2312编码的网页抓取的,第二个是文字unicode。

logging.debug(type(s))
logging.debug(s)
logging.debug(repr(s))
logging.debug(s.encode('gb2312', errors='replace'))
logging.debug(s.encode('utf-8', errors='replace'))
tmplt = jinja_env.get_template('hello.html')
logging.debug(tmplt.render(text=s))

self.response.out.write(s)
self.response.out.write(repr(s))
self.response.out.write(tmplt.render(text=s))
self.response.out.write('<br>')

s = u'你好'
logging.debug(type(s))
logging.debug(s)
logging.debug(repr(s))
logging.debug(s.encode('gb2312', errors='replace'))
logging.debug(s.encode('utf-8', errors='replace'))
tmplt = jinja_env.get_template('hello.html')
logging.debug(tmplt.render(text=s))

self.response.out.write(s)
self.response.out.write(repr(s))
self.response.out.write(tmplt.render(text=s))

然而,gae日志显示只有后者才能正常工作。

<type 'unicode'>
 你好
u'\xc2\x97\xc2\x8b \xc3\xa4\xc2\xbd\xc2\xa0\xc3\xa5\xc2\xa5\xc2\xbd'
???? ?��??????????
 你好
 你好

<type 'unicode'>
你好
u'\u4f60\u597d'
���
你好
你好

我已经验证了抓取的unicode和文字unicode在ipython中是一样的,抓取的unicode在我的本地dev_appserver中工作正常。

thx @unutbu,两个repr(s)在app引擎上是不同的,但在我的本地开发服务器中是相同的。我正在使用GAE 1.6.1和python27运行时。下面是我的本地开发服务器日志。

<type 'unicode'>
你好
u'\u4f60\u597d'
你好
浣犲ソ
锘夸綘濂?
<type 'unicode'>
你好
u'\u4f60\u597d'
你好
浣犲ソ
锘夸綘濂?

有人能帮我一把吗?

0 个答案:

没有答案