«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я получаю сообщение «UnicodeDecodeError: кодек utf-8 не может декодировать байт 0xff в позиции 0: неверный начальный байт» при декодировании файла в Python?

Почему я получаю сообщение «UnicodeDecodeError: кодек utf-8 не может декодировать байт 0xff в позиции 0: неверный начальный байт» при декодировании файла в Python?

Опубликовано 7 ноября 2024 г.
Просматривать:851

Why am I receiving a \

Устранение неполадок UnicodeDecodeError при декодировании UTF-8 в Python

Обнаружение ошибки «UnicodeDecodeError: кодек 'utf-8' не может декодировать байт 0xff» в позиции 0: неверный стартовый байт» означает, что Python пытается декодировать последовательность байтов с использованием UTF-8, но обнаруживает недопустимый стартовый байт. Это происходит, когда массив байтов, предположительно являющийся строкой в ​​кодировке UTF-8, содержит символы вне кодировки UTF-8.

Причина ошибки

В приведенном примере открытие файла с помощью open(path).read() запускает попытку декодирования. Поскольку файл содержит байты, не соответствующие UTF-8, процесс декодирования завершается сбоем, что приводит к ошибке.

Решение

Чтобы решить эту проблему, необходимо обязательно обрабатывать файл как двоичный, а не текстовый файл. Это предотвращает попытки Python декодировать байты как строку UTF-8.

Изменяя код для открытия файла в режиме «rb», мы заставляем Python читать файл как двоичный:

with open(path, 'rb') as f:
    contents = f.read()

Указание 'b' в аргументе режима указывает Python обрабатывать файл как двоичный поток, гарантируя, что содержимое остается байтовым объектом без каких-либо попыток декодирования.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3