編碼 - Python 3.6中 ’utf-8’ codec can’t decode byte invalid start byte?
問(wèn)題描述
Python 3.6中,網(wǎng)頁(yè)信息解析失敗,試了很多種編碼,查看網(wǎng)頁(yè)的編碼方式也是utf-8。錯(cuò)誤信息:’utf-8’ codec can’t decode byte 0x8b in position 1: invalid start byte?還有就是第一個(gè)print終端里打印出來(lái)的unicode內(nèi)容是[b’x1fx8bx08x00x...]這種格式的,之前也有過(guò)這種情況,一個(gè)print打2個(gè)變量,就是b’x, 如果分來(lái)2行打又變回了漢字。是因?yàn)槭裁丛蚰兀?/p>
# -*- coding: utf-8 -*-import json , sqlite3import urllib.requesturl = (’http://wthrcdn.etouch.cn/weather_mini?city=%E4%B8%8A%E6%B5%B7’)resp = urllib.request.urlopen(url)content = resp.read()print(content)print(type(content))print(content.decode(’utf-8’))
問(wèn)題解答
回答1:看了一下網(wǎng)站返回的是gzip壓縮過(guò)的數(shù)據(jù),所以要進(jìn)行解碼
# coding=utf-8from io import BytesIOimport gzipimport urllib.requesturl = (’http://wthrcdn.etouch.cn/weather_mini?city=%E4%B8%8A%E6%B5%B7’)resp = urllib.request.urlopen(url)content = resp.read() # content是壓縮過(guò)的數(shù)據(jù)buff = BytesIO(content) # 把content轉(zhuǎn)為文件對(duì)象f = gzip.GzipFile(fileobj=buff)res = f.read().decode(’utf-8’)print(res)
requests不好用嗎?
回答3:建議用requeset,代碼如下:
import requestsr = requests.get(’http://wthrcdn.etouch.cn/weather_mini?city=%E4%B8%8A%E6%B5%B7’)print(r.text)回答4:
不是字符編碼問(wèn)題, 你看看你請(qǐng)求的 Respont headers
Status Code: 200 OK Access-Control-Allow-Headers: * Access-Control-Allow-Methods: * Access-Control-Allow-Origin: * Cache-Control: must-revalidate, max-age=300 Connection: Keep-Alive Content-Encoding: gzip Content-Length: 443 Date: Fri, 10 Mar 2017 03:20:46 GMT Fw-Cache-Status: hit Fw-Via: HTTP MISS from 58.59.19.99, DISK HIT from 183.131.161.27 Server: Tengine/2.1.2
是gzip, 如果用標(biāo)準(zhǔn)庫(kù)的東西, 還需要把gzip 給解開(kāi)
相關(guān)文章:
1. docker網(wǎng)絡(luò)端口映射,沒(méi)有方便點(diǎn)的操作方法么?2. debian - docker依賴的aufs-tools源碼哪里可以找到啊?3. docker鏡像push報(bào)錯(cuò)4. docker - 如何修改運(yùn)行中容器的配置5. docker-machine添加一個(gè)已有的docker主機(jī)問(wèn)題6. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????7. golang - 用IDE看docker源碼時(shí)的小問(wèn)題8. macos - mac下docker如何設(shè)置代理9. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””10. docker不顯示端口映射呢?
