Ответ 1
У вас было почти прямо в последней строке. Вы хотите
str(bytes_string,'utf-8')
потому что тип bytes_string
равен bytes
, то же, что и тип b'abc'
.
Я прочитал в приложении электронной почты XML с помощью
bytes_string=part.get_payload(decode=False)
Полезная нагрузка поступает как строка байтов, как предлагает мое имя переменной.
Я пытаюсь использовать рекомендуемый подход Python 3, чтобы превратить эту строку в полезную строку, с которой я могу манипулировать.
В этом примере показано:
str(b'abc','utf-8')
Как я могу применить аргумент ключевого слова b
(bytes) к моей переменной bytes_string
и использовать рекомендуемый подход?
То, как я пытался, не работает:
str(bbytes_string,'utf-8')
У вас было почти прямо в последней строке. Вы хотите
str(bytes_string,'utf-8')
потому что тип bytes_string
равен bytes
, то же, что и тип b'abc'
.
Вызвать decode()
в экземпляре bytes
, чтобы получить текст, который он кодирует.
str = bytes.decode()
ОБНОВЛЕНО:
НЕ ИМЕЕТ ЛЮБОЕ
b
и кавычки в начале и конце
Поскольку ваш код может содержать неузнаваемый символ 'utf-8'
,
лучше использовать только str без каких-либо дополнительных параметров:
bad_bytes = b'\x02-\xdfI#)'
text = str( bad_bytes )[2:-1]
если вы добавили параметр 'utf-8'
, к этим конкретным байтам, вы должны получить сообщение об ошибке.
Как говорит стандарт PYTHON 3, text
теперь будет в utf-8 без каких-либо проблем.