Python: кодек декодирования Base64 не может декодировать байты в позиции 47-48: недопустимый байт продолжения

#python-3.x #unicode #utf-8 #base64 #decode

#python-3.x #unicode #utf-8 #base64 #декодировать

Вопрос:

Я нашел много вопросов, связанных с этим вопросом в stackoverflow, и даже следил и применял то, что решало проблемы для других пользователей. Я все еще на начальной строке.

Я получаю ответ в формате в кодировке UTF-8. Это XML-файл, который я хочу декодировать. Я сохранил ответ в файле .txt, сохраненном в кодировке UTF-8, и попытался выполнить следующее :

 import base64

with open('docdata.txt', 'r') as f:
    e = f.read()

print(e[:50])

decoded = base64.b64decode(e)
print(str(decoded, "utf-8"))
  

Когда я запускаю вышеуказанную программу, я получаю эту ошибку:

   print(str(decoded, "utf-8"))
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 47-48: invalid continuation byte
  

Размер файла составляет около 26 МБ. Когда я попытался загрузить тот же файл в Base64decode, я получаю правильный выходной файл без каких-либо ошибок.

      print(decoded[:50])    
   >> b'PKx03x04x14x00x08x08x08x005O=Qx00x00x00x00x00x00x00x00x00x00x00x00x11x00x00x00newUserPkList.xmlxecxbdxcb'
     
   print(decoded[47:50]
   >> b'xecxbdxcb'
  

Пожалуйста, дайте мне знать, какую ошибку я делаю, и как я могу решить эту ошибку?

Спасибо.

Комментарии:

1. Файл не является текстовым файлом в кодировке UTF-8. PK указывает . ZIP-файл.

2. полученный мной ответ должен ли я сохранить его как .zip, а затем разархивировать его с помощью модуля unzip, а затем продолжить декодирование utf-8?

3. Заголовки ответа, вероятно, указывают на ход действий.