日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python open ascii codec cant_Python3.6 报错问题:'ascii' codec can't encode character

發布時間:2024/7/23 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python open ascii codec cant_Python3.6 报错问题:'ascii' codec can't encode character 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當我使用?urllib.request.urlopen 訪問?http://api.map.baidu.com/telematics/v3/weather?output=json&location=北京&ak=**** 的時候,程序報錯了:

1 #!D:/Program Files/Python36

2

3 importurllib.request4

5 classWeatherHandle:6

7 #初始化字符串

8 url = u"http://api.map.baidu.com/telematics/v3/weather?output=json&"

9

10 ak = u""

11

12 defgetWeather(self, city):13

14 url_like = self.url + 'location=' + city + '&ak=' +self.ak15

16 response =urllib.request.urlopen(url_like).read()17

18 print(response)

錯誤的信息提示主要集中在最下面的三行中,從這三行可以看出是編碼問題,我經過了一番百度之后,一開始有人叫我使用 sys.getdefaultencoding() 這個方法來設置成 utf-8 編碼格式,但我輸出打印了一下,我當然的編碼格式就是 utf-8:

1 importsys2 print(sys.getdefaultencoding());

如此可見,Python3.6 默認的編碼就是 utf-8,Python2.X 的解決方法是不是這個,我沒有進行嘗試。

后來我又找了一篇文章,文章中說:URL 鏈接不能存在中文字符,否則 ASCII 解析不了中文字符,由這句語句錯誤可以得出 self._output(request.encode('ascii'))。

所以解決辦法就是將URL鏈接中的中文字符進行轉碼,就可以正常讀取了:

1 #!D:/Program Files/Python36

2

3 importurllib.request4

5 classWeatherHandle:6

7 #初始化字符串

8 url = u"http://api.map.baidu.com/telematics/v3/weather?output=json&"

9

10 ak = u""

11

12 defgetWeather(self, city):13

14 url_like = self.url + 'location=' + urllib.parse.quote(city) + '&ak=' +self.ak15

16 response =urllib.request.urlopen(url_like).read()17

18 print(response)

這樣就不會出現上述的錯誤了。但是我們現在顯示的是亂碼,我們只需要在輸出的時候,使用 decode("utf-8") 將結果集轉化為 utf-8 編碼,就能正常顯示了:

1 #!D:/Program Files/Python36

2

3 importurllib.request4

5 classWeatherHandle:6

7 #初始化字符串

8 url = u"http://api.map.baidu.com/telematics/v3/weather?output=json&"

9

10 ak = u""

11

12 defgetWeather(self, city, time):13

14 url_like = self.url + 'location=' + city + '&ak=' +self.ak15

16 response =urllib.request.urlopen(url_like).read()17

18 print(response.decode('utf-8'))

以上就是我解決問題的方法了,由于小編是剛學 Python 不久,所以技術水平還很菜,如果上面有什么會誤導大家的,希望大家能指正一下,小編會立刻修改。

總結

以上是生活随笔為你收集整理的python open ascii codec cant_Python3.6 报错问题:'ascii' codec can't encode character的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。