当我使用 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相关推荐

  1. python读取txt文件时,报错【utf-8 codec cant decode byte 0xcc】的解决办法

    最近在学习正则表达式,想要统计[天龙八部]中各个主角出现的次数. 在读取文件的时候,提示下面错误: 原来下载的天龙八部txt文件的编码格式是[ANSI],所以读取报错了. 解决办法很简单,将文件的编码 ...

  2. python报错UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe8 in position 0 解决方案

    python报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0 解决方案 参考文章: (1)python报 ...

  3. 报错UnicodeEncodeError: ‘ascii‘ codec can‘t encode character ‘\u7b2c‘ in position 64: ordinal not in r

    报错UnicodeEncodeError: 'ascii' codec can't encode character '\u7b2c' in position 64: ordinal not in r ...

  4. 解决Python报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyte

    解决Python报错–UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyte ...

  5. Python报错:‘unicodeescape‘ codec can‘t decode bytes in position 2-3: truncated \UXXXXXXXX escape

    Python报错:'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 问题原因 ...

  6. Python报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte

    Python报错UnicodeDecodeError: 'gbk' codec can't decode byte,这个错误是做NLP的小伙伴常见的一个错误,报错原因是读取的文件中有中文. 核心思路: ...

  7. pip安装报错:'ascii'码不能解码,安装路径有中文

    转载自:https://blog.csdn.net/u013948858/article/details/77800663 [python]pip安装报错UnicodeDecodeError: 'as ...

  8. import configparser config.read(config_path) 报错 UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x

    import configparser config.read(config_path) 报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0x ...

  9. ubuntu18.04安装python的mysqlclient==1.4.6报错ERROR Command errored out with exit status 1python setup

    安装python的mysqlclient==1.4.6报错 环境: ubuntu18.04 python 3.7.2 Django 2.2 想要使用Django来操作MySQL,报错: LookupE ...

最新文章

  1. python爬虫执行scrapy crawl demo出现: import win32api ModuleNotFoundError: No module named 'win32api'错误
  2. linux如何修改权限详解
  3. 明天是你的生日~~~
  4. java04376_Java - jdbc mybatis
  5. sqlserver服务启动后停止,传递给数据库 'master' 中的日志扫描操作的日志扫描号无效...
  6. 3、构建并安装PHP扩展
  7. B9.流行的框架与新技术
  8. lisp 任意点 曲线距离_lisp程序能求多段线上任意一点到其中一个端点的距离,,每次要量桩号很烦...哪位大侠给个..谢谢了...........
  9. Redis 6.0 源码阅读笔记(1) -- Redis 服务端启动及命令执行
  10. PHP 短信验证码:发送及验证
  11. Json转对象 调用toBean
  12. 测试基础知识1 》》软件测试入门
  13. 阿里云ODPS升级为一体化大数据平台 满足用户多元化数据计算需求
  14. Spring Tips: The Wavefront Observability Platform
  15. 摘录的Tim Urban关于拖延症的总结
  16. 18.网络技术——BGP的原理+实验题(后附练习题)
  17. Tinker热更新与AndResGuard资源混淆的结合
  18. 光纤收发器在安装使用过程所遇到的问题及解决办法
  19. su PK sudo
  20. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.3 模型在设计中的作用...

热门文章

  1. java 垂直走马灯多行,Android实现图文垂直跑马灯效果
  2. NSIS脚本语言安装与编译
  3. python(c++)刷题+剑指offer
  4. Java并发编程实战~Actor 模型
  5. android 源码分析notification,# Notification 源码分析
  6. 数据可视化--pyecharts绘图
  7. matlab 未定义mat2gray,matlab中mat2gray函数用法
  8. java 线程由浅入深_Java多线程:由浅入深看synchronized的底层实现原理
  9. 最优化学习笔记(一)预备知识
  10. java8新特性(4)— Stream流