Unicode, utf-8/utf-16 кодирующий в Python

Я был перенаправлен здесь, потому что у меня есть та же проблема. Я также попробовал обходное решение Troy Howard, но это, кажется, не работает.

подход я сделал на этом, больше не должен использовать объект ответа записать файл на лету. Так как PDF является уже существующим на сервере, что я сделал должен был перенаправить мою страницу, указывающую на тот файл PDF. Работает отлично.

http://forums.asp.net/t/143631.aspx

я надеюсь, что мое неопределенное объяснение дало Вам общее представление.

6
задан SilentGhost 22 June 2010 в 17:00
поделиться

4 ответа

Это символ Юникода, который, похоже, не отображается в кодировке вашего терминала. print пытается закодировать объект unicode в кодировке вашего терминала, и если это не может быть сделано, вы получите исключение.

На терминале, который может отображать utf-8, вы получите:

>>> print u'\u3053'
こ

Кажется, ваш терминал не может отображать utf-8, иначе как минимум строка print a.encode ("utf-8") должна выдавать правильный символ.

8
ответ дан 8 December 2019 в 13:01
поделиться

Вы спросите:

u '\ u3053 \ n'

Это utf-16 ?

Ответ - нет: это юникод, а не какая-то конкретная кодировка. utf-16 - это кодировка.

Чтобы эффективно вывести строку Unicode на ваш терминал, вам необходимо выяснить, какую кодировку этот терминал готов принять и может отображать. Например, Terminal.app на моем ноутбуке настроен на UTF-8 и с богатым шрифтом, поэтому:

screenshot
(источник: aleax.it )

... буква хирагана отображается правильно. На рабочей станции Linux у меня есть терминальная программа, которая постоянно сбрасывается на Latin-1, поэтому она может испортить вещи, похожие на вашу - я могу установить ее на utf-8, но у нее нет большого количества глифов в шрифте, поэтому вместо этого он будет отображать несколько бесполезные глифы-заполнители.

7
ответ дан 8 December 2019 в 13:01
поделиться

Символ U + 3053 «HIRAGANA LETTER KO».

Бит \ xff \ xfe в начале двоичного формата UTF-16 - это порядок байтов в кодировке. mark (U + FEFF), тогда "S0" будет \ x5e \ x30 , затем \ n из исходной строки. (У каждого из символов байты «перевернуты», поскольку используется кодировка UTF-16 с прямым порядком байтов.)

Форма UTF-8 представляет тот же символ хираганы в трех байтах с битовой комбинацией, описанной здесь .

Теперь, что касается того, действительно ли вы должны иметь это в вашем наборе данных ... откуда эти данные берутся? Разумно ли для него использовать символы хираганы?

2
ответ дан 8 December 2019 в 13:01
поделиться

Вот Юникод HowTo Doc для Python 2.6.2:

http://docs.python.org/howto/unicode.html

См. Также ссылки в разделе «Справочная информация» этого документа для других объяснений, включая одно от Джоэла Спольски.

1
ответ дан 8 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: