Понимание печати байтов в интерактивном интерпретаторе Python

1

Я наткнулся на то, что я могу описать только как ошибку в интерактивном интерпретаторе для Python. Хотя ошибка довольно несущественна, я чувствовал, что это интересная проблема, и хороший шанс узнать что-то о питоне, вычислениях на низком уровне и отладки.

Проблема возникает здесь:

pic = open("blurry.jpg", "rb")
data = pic.read()
for byte in data:
    print byte

это приводит к...

#prints the entire file byte by byte_
?

0
?
?
>>> 1;2c

Теперь, после этого, я обнаружил, что [] {}\@^ заменены соответственно на Ä, Å, ä, å, ö, É, 'Ü'. Интересно, однако, они все еще поддерживают функциональность. Например, list = Ä1,2,3,4Å не вызывает ошибок. Более того, и, возможно, более интересно... это поведение продолжается даже после выхода из интерпретатора и возврата в bash.

Кроме того, я могу только воссоздать это поведение при использовании определенного изображения, которое я здесь размещал: http://imgur.com/lTo6m

У меня нет ни малейшего представления о том, где я начну анализировать такую ​​проблему, поэтому я надеялся, что кто-то здесь сможет дать некоторое представление.

Спасибо, как всегда!

Теги:
terminal
byte
ansi-escape

1 ответ

7
Лучший ответ

Это не ошибка с Python, это ваш терминал переключается на альтернативную кодировку. Запустите reset в командной строке, чтобы исправить это.

  • 0
    Ах, ха-ха! Что вызывает это тогда? Как печать содержимого изображения приводит к изменению кодировки?
  • 0
    Как фантомные триглифы. :)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню