簡體   English   中英

UnicodeDecodeError:'utf-8'編解碼器無法解碼位置0的字節0x80:無效的起始字節

[英]UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

我正在使用pickle.dumps()保存列表,如下所示:

my_list = ['Hello', 'I', 'Have', 'a', 'question', 'camión']
my_pickle = pickle.dumps(my_list)       

創建泡菜后,我將其上載到Azure Batch中的容器中:

blob_service.block_service.create_blob_from_bytes('containername', 'filename', my_pickle)

並將其取回:

my_bytes = blob_service.block_service.get_blob_to_bytes('containername', 'filename')

我想要的( my_list )位於my_bytes.content內,如果我打印出來,我會得到:

b'\\x80\\x03]q\\x00(X\\x05\\x00\\x00\\x00Helloq\\x01X\\x01\\x00\\x00\\x00Iq\\x02X\\x04\\x00\\x00\\x00Haveq\\x03X\\x01\\x00\\x00\\x00aq\\x04X\\x08\\x00\\x00\\x00questionq\\x05X\\x07\\x00\\x00\\x00cami\\xc3\\xb3nq\\x06e.'

為了使my_bytes返回列表,我嘗試對其進行解碼,如下所示:

my_bytes.decode('utf-8')

但是我收到以下錯誤:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

其他編碼(如latin-1 )沒有給出錯誤,但正在返回

'\\x80\\x03]q\\x00(X\\x05\\x00\\x00\\x00Helloq\\x01X\\x01\\x00\\x00\\x00Iq\\x02X\\x04\\x00\\x00\\x00Haveq\\x03X\\x01\\x00\\x00\\x00aq\\x04X\\x08\\x00\\x00\\x00questionq\\x05X\\x07\\x00\\x00\\x00camiónq\\x06e.'

而不是my_list

我在Internet上進行了搜索,以了解為什么會發生這種情況,但找不到任何對我有幫助的東西,因此,任何建議或建議都非常受歡迎。 我想從my_bytes獲取my_list 請注意,我對如何解碼my_bytes

使用pickle.loads反轉pickle.dumps

>>> s = b'\x80\x03]q\x00(X\x05\x00\x00\x00Helloq\x01X\x01\x00\x00\x00Iq\x02X\x04\x00\x00\x00Haveq\x03X\x01\x00\x00\x00aq\x04X\x08\x00\x00\x00questionq\x05X\x07\x00\x00\x00cami\xc3\xb3nq\x06e.'
>>> import pickle
>>> pickle.loads(s)
['Hello', 'I', 'Have', 'a', 'question', 'camión']

我最后要做的就是將列表轉換為字符串:

my_list=str(my_list)

並將其上傳到Blob存儲為:

BlockStorage('<account_name>', '<account_key>').block_service.create_blob_from_text('<container_name>', '<file_name>', my_list)

最后,下載它:

my_file_as_str = BlockStorage('<account_name>', '<account_key>').block_service.get_blob_to_text('<container_name>', '<file_name>')

要獲取我的列表,我現在需要做的是:

my_list = eval(my_file_as_str.content)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM