Собрание / буквальный юникод по-разному отображаются в Google App Engine - PullRequest
1 голос
/ 12 января 2012

В следующем коде у меня есть два 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'
你好
浣犲ソ
锘夸綘濂?

Может кто-нибудь помочь мне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...