Найти - Пользователи
Полная версия: Вывод print (Опять кодировки)
Начало » Python для экспертов » Вывод print (Опять кодировки)
1 2
Tim32
Здравствуйте. Тема избитая, но в поиске что то объясняющее данное явление ничего не нашел.

filename = 'AjaraTV.pdt'
data = open(filename,'rb').read()
print data
for i in data:
    print i

Первый print выводит только латиницу, а вместо кириллицы пустоту (пробелы).
Второй print побуквенно выводит весь файл. При этом русские символы печатаются, как и английские.

Почему так происходит? Заранее благодарю.
mironich
Режим чтения с rb на r смените.
Tim32
mironich
Режим чтения с rb на r смените.

Не помогает. Так и первый и второй print печатают только английские символы.
sp3
print data.decode("исходная кодировка").encode("кодировка устройства")
“исходная кодировка” - у вас кодировка файла, например, utf8 или cp1252, смотрите сами
“кодировка устройства” - куда печатаете. Если это консоль русской винды - cp866

Что тут сложного?
truporez
для чтения из файла в нужной кодировке, есть функция codecs.open
Tim32
sp3

Печатаю в консоль GUI. То что вы сказали не объясняет почему в одно случае печатаются символы, а другом нет.
ZAN
Очень интересный пример, на самом деле.
Скажите, в какой кодировке файл и в какой кодировке ожидается текст в GUI?
Tim32
ZAN
Очень интересный пример, на самом деле.Скажите, в какой кодировке файл и в какой кодировке ожидается текст в GUI?

Поправочка. В консоль все печатается прекрасно. GUI PyScripter. Я не не знаю какая у него кодировка. А как понять в какой кодировки файл? Я его не записывал. Формат файла pdt. Hex редактор нормально показывает его при выборе кодировки Default ANSI (Что как я понимаю обычный ASCII, так ведь?)
ZAN
Судя по всему, это баг PyScripter-а в перехватывании stdout. Но что именно там происходит, трудно сказать.
Что касается определения кодировки - можно открыть файл браузером и переключать кодировки, пока кириллица не отобразится нормально или воспользоваться замечательной библиотекой chardet.
Что касается ANSI, то это не совсем ASCII, однако ни в той, ни другой кодировке нет кириллических символов.
o7412369815963
ZAN
Судя по всему, это баг PyScripter-а в перехватывании stdout.
Лучше сказать “фича”, в eclipse что-то подобное, я так понял, что при запуске через окружение передаются спец. настройки - кодировка, пути и пр.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB