Эта проблема может быть воспроизведена, если файл Python неправильно закодирован с использованием 8-битной кодировки вместо UTF-8. Байт 0xb0
отображается в символ градуса во многих 8-битных кодировках, как можно видеть здесь .
Ошибка воспроизводится, если файл python закодирован как латинский. 1
iconv --from-code=utf-8 --to-code=latin1 special_char.py > latin_1_char.py
python3.7 latin_1_char.py
File "latin_1_char.py", line 4
"""
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb0 in position 145: invalid start byte
или как cp1252
iconv --from-code=utf-8 --to-code=cp1252 char.py > cp1252_char.py
(so38) kdwyer@osiris:~/p/so38 $ python3.7 cp1252_char.py
File "cp1252_char.py", line 4
"""
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb0 in position 145: invalid start byte
, но не в том случае, если файл закодирован как utf-8
iconv --from-code=latin1 --to-code=utf-8 latin_1_char.py > utf8_char.py
python3.7 utf8_char.py
Hello!