Просмотр документации chr
в Python 2.7 :
Возвращает строку из одного символа, код ASCII которого является целым числом i.
source
, но ASCII находится в диапазоне 128. Но в Python 2.7 у меня есть:
> chr(181)
'\xb5
Это удивительно, я ожидал ошибка. Сейчас я просто приму это.
In Python 3.7 :
Возвращает строку, представляющую символ, кодовой точкой Unicode которого является целое число i.
источник
Так что в основном это unichr
в Python 2.7.
В Python 3,7 :
> chr(181).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xb5' in position 0: ordinal not in range(128)
Что ожидается, а затем:
> chr(181).encode('utf8')
b'\xc2\xb5'
Обратите внимание, что у нас есть \xb5
в общем.
Вопрос :
Почему Python 2.7 не прерывается на chr(181)
и как получается, что он на самом деле выводит код, который кажется частично правильным ,