Python пишет символы Unicode неправильно - PullRequest
2 голосов
/ 10 марта 2011

У меня возникли проблемы с получением Python для правильной обработки текста в Unicode.

Я свел его к следующему:

>>>print 'Høst'
Høst
>>>print u'Høst'
HÃ,st
>>>u = u'Høst'
>>>u
u'H\xf8st'

sys.stdout.encoding говоритчто он использует UTF-8, что, скорее всего, и работает первая, не-Unicode, печать.Если мне просто нужно что-то напечатать, то это будет хорошо.Однако я создаю документ xml из данных на SQL Server, и тогда он действительно должен быть настоящим юникодом.

Мои данные выглядят так, как будто они очень хороши для данных юникода, u'H \ xf8st 'выглядит правильномне, так почему Python продолжает выводить его как 'HÃ, st'?

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

ø равно \xc3\xb8 в ISO-8859-1.\xc3\xb8 также является UTF-8 для символа Unicode 00F8 (ø).Возможно, ваша консоль действительно принимает ISO-8859-1, а не UTF-8 в качестве входных данных, что означает, что sys.stdout.encoding неверен.

0 голосов
/ 10 марта 2011

Вы используете ipython? Поддержка юникода не работает, и я могу воспроизвести ваш вывод с помощью ipython. Попробуйте свой пример в стандартной оболочке Python.

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