Понимание печати байтов в интерактивном интерпретаторе Python - PullRequest
1 голос
/ 24 апреля 2011

Я наткнулся на то, что я могу описать только как ошибку в интерактивном интерпретаторе для Python.Несмотря на то, что ошибка довольно несущественна, я чувствовал, что это интересная проблема и хороший шанс узнать кое-что о 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

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

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

1 Ответ

7 голосов
/ 24 апреля 2011

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

...