Я надеялся использовать unicode
вместо str
для всех строк в моем проекте. Я пытаюсь использовать метод str.encode
, но не могу понять из документации, что метод encode
точно выполняет или ожидает в качестве входных данных.Что ожидает str.encode как вход?
Греческая маленькая буква pi U + 03C0, а при кодировании в UTF-8 - 0xCF 0x80. Я получаю следующее:
>>> s1 = '\xcf\x80'
>>> s1.encode('utf-8','ignore')
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
s1.encode('utf-8','ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 0: ordinal not in range(128)
Я попробовал его на:
>>> s2='\x03\xc0'
>>> s2.encode('utf-8','ignore')
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
s2.encode('utf-8','ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 1: ordinal not in range(128)
Что encode
ожидать в качестве входных данных, и почему вариант «игнорировать» не игнорировать ошибку? Я попробовал «заменить», и это также не скроет ошибку.