печатать не ascii текст на питоне - PullRequest
0 голосов
/ 22 октября 2018

Я использую python2 и хочу преобразовать текст не utf-8 в читаемую строку.Я пытаюсь декодировать, используя латино-1 и UTF-8 также.Но я не получаю успеха.

Это строка

s =  ' ¤¿à¤²à¤¾ मेंदान रोड़ इंदौर'

Я пытался:

s.decode('utf-8')

Я получаю следующий вывод:

u' \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbf\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb2\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbe \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xae\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\xa2\xc2\u20ac\xc2\xa1\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\u0161\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa6\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbe\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa8 \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb0\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\xa2\xc2\u20ac\xc2\xb9\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\u2026\xc2\u201c \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\xa1\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\u0161\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa6\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\u2026\xc2\u2019\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb0'

Приведенный выше вывод все еще не читается.

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 22 октября 2018

Первым делом первым: вы ДОЛЖНЫ прочитать это , без оправдания .

Как только вы это сделаете, вы поймете, что попытка декодировать байтовую строку в Unicode, не зная оригинальной кодировки, - это в основном пустая трата времени.

Второй пункт: это (сокращено для удобства чтения):

u' \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbf\xc3\u0192\xc2 '

- это внутреннее представление строки Unicode в Python - вы получите нечто похожее, отобразив внутреннее представление вашей строки байтов:

$ python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "¤¿à¤²ÃÂ"
>>> s # internal representation
'\xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xa4\xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xbf\xc3\x83\xc6\x92\xc3\x82 \xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xa4\xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xb2\xc3\x83\xc6\x92\xc3\x82'
>>> print(s) # readable output
¤¿à¤²ÃÂ

Таким образом, ваша единственная проблема здесь - путать внутреннее представление с «видимым человеком» выводом

Теперь обратите внимание, что то, как строка в конечном итоге будет отображаться пользователю, зависит от программного обеспечения.выполнение рендеринга (ваш xterm или его эквивалент при запуске python из командной строки и печать в stdout, ваш браузер при рендеринге как части сгенерированного HTTP-ответа на стороне сервера и т. д. и т. д.) и системные настройки, которые не входят в сферу ответственности Python.

...