Обработка иностранных символов на сайте, работающем на python, tornado и redis - PullRequest
1 голос
/ 29 июня 2011

Я прочитал многие из связанных вопросов и немного не уверен относительно того, как справиться с этой ситуацией.

Основной вопрос: Как лучше всего обращаться с «иностранными» (иврит, греческий, Арамейский? И т. Д.) Символов на веб-сайте?

Я понял, что мне нужно использовать кодировку UTF-8, но механика, лежащая в ее основе, потеряна для меня.

Я использую смерч какмои рамки и я храню данные в Redis.

Моя текущая реализация заключается в простом сохранении эквивалента английской клавиатуры в хранилище данных и последующем рендеринге на странице с соответствующим ивритским / греческим шрифтом (например, Bwhebb.ttf).По большей части это сработало, но я столкнулся с некоторыми символами, кодируемыми CGI, что, в свою очередь, приводит к сбою метода шрифта.

Ответы [ 2 ]

7 голосов
/ 20 марта 2012

Вы должны сохранить свой текст в Unicode.

import redis
r = redis.Redis(host='localhost', port=6379, db=0)

greek = u'αβγδ'
greek, type(greek)
# (u'\u03b1\u03b2\u03b3\u03b4', <type 'unicode'>)

r.set(u"greek", greek)
# True

Хотя, когда вы получите его, Redis, скорее всего, выдаст вам строку байта, а это не то, что вам нужно:

greek2 = r.get(u"greek")
greek2, type(greek2)
# ('\xce\xb1\xce\xb2\xce\xb3\xce\xb4', <type 'str'>)

Вы хотите преобразовать его в Unicode, например:

greek2 = unicode(r.get(u"greek"), "utf-8")
greek2, type(greek2)
# (u'\u03b1\u03b2\u03b3\u03b4', <type 'unicode'>)
3 голосов
/ 29 июня 2011

Прочитайте статьи, приведенные в комментариях.

Короткий ответ, однако, сохраняйте Unicode в Redis, и если вы используете Python 2.x, используйте строки Unicode (u"") повсюду. Возможно, вам придется конвертировать в Unicode (unicode()) после извлечения из Redis, в зависимости от того, что он вам дает.

...