В следующем коде у меня есть два 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'
���
你好
你好
Я проверил, что укороченный юникод и буквальный юникод одинаковы в ipython, и уловленный юникод работает нормально в моем локальном dev_appserver.
thx @unutbu, два repr отличаются в приложениидвигатель, но то же самое в моем локальном сервере разработки.Я использую GAE 1.6.1 с Python27 Runtime.Ниже приведен журнал локального сервера разработки.
<type 'unicode'>
你好
u'\u4f60\u597d'
你好
浣犲ソ
锘夸綘濂?
<type 'unicode'>
你好
u'\u4f60\u597d'
你好
浣犲ソ
锘夸綘濂?
Может кто-нибудь помочь мне?