Django \ u символы в моих строках UTF8 - PullRequest
1 голос
/ 07 июля 2010

Я добавляю данные UTF-8 в базу данных в Django.

Когда данные поступают в базу данных, все выглядит хорошо - символы (например): «Hello» кодируются в UTF-8.

Моя база данных MySQL имеет кодировку UTF-8.Когда я проверяю данные из БД, выполняя выборку, мой пример строки выглядит так: «Hello».Я предполагаю, что это показывает символы в кодировке UTF-8.

Однако, когда я выбираю данные из базы данных в терминале или для экспорта в качестве веб-службы - моя строка выглядит следующим образом: \ u201cHello World\ u201d.

Кто-нибудь знает, как я могу правильно отображать свои символы?

Нужно ли где-нибудь выполнять дополнительное кодирование UTF-8?

Спасибо, Ник.

1 Ответ

6 голосов
/ 07 июля 2010
u'\u201cHello World\u201d'

Правильное представление Python текста Unicode “Hello World”.Символы smartquote отображаются с использованием шестнадцатеричного экранирования \uXXXX, а не дословно, поскольку часто возникают проблемы с записью символов Unicode в терминал, особенно в Windows.(Похоже, что MySQL пытался записать их в терминал, но не смог, что привело к заполнению ?.)

На терминале, который умеет правильно вводить и выводить символы Юникода, вы можете подтвердитьТо же самое:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> u'\u201cHello World\u201d'==u'“Hello World”'
True

, как и для байтовых строк, \x последовательности точно такие же, как символы:

>>> '\x61'=='a'
True

Теперь, если у вас есть \u или\x последовательности, выходящие из Python и попадающие в экспортируемый файл, тогда вы сделали что-то не так с экспортом.Возможно, вы использовали repr() где-то по ошибке.

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