簡體   English   中英

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

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

我正在嘗試從鏈接中抓取圖片並將其放入圖像文件中。 請求響應返回字節流。 所以我正在使用decode('utf-8')轉換為unicode流,但是,我遇到了以下錯誤:

打印(info.decode(('utf-8')))

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

    from urllib import request
    img = request.urlopen('http://www.py4inf.com/cover.jpg')
    fhand = open('cover.jpg', 'w')
    size = 0
    while True:
        info = img.read(100000)
        if len(info) < 1 : break
        size = size + len(info)
        print (info.decode(('utf-8')))
        fhand.write(info.decode(('utf-8')))

    print (size,'characters copied.')
    fhand.close()

請讓我知道我該如何進行。 謝謝。

請勿對JPG圖像使用Unicode轉換。

Unicode用於文本。 您下載的不是文本,而是其他內容。

嘗試這個:

from urllib import request
img = request.urlopen('http://www.py4inf.com/cover.jpg')
fhand = open('cover.jpg', 'wb')
size = 0
while True:
    info = img.read(100000)
    if len(info) < 1 : break
    size = size + len(info)
    fhand.write(info)

print (size,'characters copied.')

或者,更簡單地說:

from urllib import request
request.urlretrieve('http://www.py4inf.com/cover.jpg', 'cover.jpg')

應該以二進制模式打開文件,然后可以逐字節復制流字節。 由於shutil已經擁有一個方便的幫助程序實用程序,因此您可以

import shutil
import os
from urllib import request

img = request.urlopen('http://www.py4inf.com/cover.jpg')
with open('cover.jpg', 'wb') as fhand:
    shutil.copyfileobj(img, fhand)
print(os.stat('cover.jpg').st_size, 'characters copied')

暫無
暫無

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

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