Django и MySql - трудности кодирования - PullRequest
2 голосов
/ 06 марта 2012

У меня проблема с приложением Django, которое обрабатывает данные, импортированные из Google (через API gdata). По сути, каждый текст, импортированный из Google, отображается с проблемами кодирования на моей странице (например, «Ceará State» отображается как «Ceará State»).

В базе данных mysql установлено значение uft-8, и все тексты правильно отображаются в моих запросах, но после того, как я поэкспериментировал с оболочкой Django, все стало немного странно:

Я изменил один из этих текстов вручную, и теперь он отображается на странице без проблем с кодировкой, но текст, отображаемый оболочкой, все еще похож на текст с проблемами кодирования:

>>> v1
<Video: São Paulo is awesome!>
>>> v1.title
u'S\xe3o Paulo is awesome!'
>>> v2
<Video: Ceará State>
>>> v2.title
u'Cear\xc3\xa1 State'

А если я попытаюсь напечатать текст:

print v1.title
Traceback (most recent call last):
  File "<console>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe3' in position 1: ordinal not in range(128)

Есть идеи о том, что происходит и как я могу это исправить? Спасибо.

EDIT:

Я написал очень глупую функцию для решения моей проблемы, пока нет лучшего решения:

def normalize(s):
    return s.encode('utf-8').replace('á', 'á').replace('ó', 'ó').replace('ç', 'ç').replace('ã', 'ã').replace('Ã', 'í')

EDIT 2:

Проблема была вызвана Apache, который не был настроен на использование UFT-8.

1 Ответ

1 голос
/ 06 марта 2012

Если я правильно вас понял, вы получаете ошибку при печати заголовка в оболочке, поэтому попробуйте это как

print v1.title.encode('utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...