UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 167: illegal multibyte sequence

使用下面的代码有的时候会报错,说什么GBK无法解码...,原因是output的默认编码跟随系统,utf-8的字符GBK有可能不认识于是报错

from urllib.request import Request
from urllib.request import urlopen url = 'http://www.cnblogs.com'
data = None
headers = {}
req = Request(url, data, headers)
resp = urlopen(req) print(resp.read().decode('utf-8'))

查看python的默认编码

import sys
print(sys.getdefaultencoding()) #utf-8

解决办法

  1. 替换掉不能解析的字符
  2. 设置stdout的编码
import io
import sys
import urllib.request
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
res=urllib.request.urlopen('http://www.baidu.com')
htmlBytes=res.read()
print(htmlBytes.decode('utf-8'))
  1. 永久性修改python默认编码 http://pako.iteye.com/blog/1153343
import sys
print(sys.setdefaultencoding()) #utf-8

文件写入编码错误

print有坑就算了,writelines写入文件也报这个gbk无法编码的问题

解决办法:

//设置编码就搞定了
html=open(line,'w',encoding='utf-8')

### 总结
这些编码问题其实是一些函数在使用时使用了默认的编码,相应的传入和改变其使用的编码就搞定了。

最新文章

  1. MVC
  2. tomcat manager配置
  3. Elasticsearch DSL中Query与Filter的不同
  4. 装饰者模式(Decorator pattern)
  5. Java ConcurrentModificationException异常原因和解决方法
  6. Hibernate Annotation笔记
  7. wpf mvvm MenuItem的Command事件
  8. 10.cadence.自定义焊盘的创建[原创]
  9. sql - 查询所有表中包含指定值
  10. spring boot + velocity中文乱码解决方式
  11. MySQL插入数据时插入无效的列
  12. 设置TIMESTAMP和DATETIME的自动初始化及自动更新
  13. Python 多进程和进程池
  14. iOS 开发笔记 - 导航到地图
  15. Pika的设计及实现
  16. php 使用table方式导出excel文件
  17. oracle dblink 查询 tns:无法解析指定的连接标识符
  18. Python Map 并行
  19. 左值&右值
  20. Mac下使用Charles抓包Android

热门文章

  1. 【GitLab】【GitHub】GitLab和GitHub的双向同步
  2. Windows 同一时候开启核心显卡与独立显卡(不接显示器启动核芯显卡)
  3. Linux内核:分析coredump文件 - 内核代码崩溃
  4. 本地docker搭建gitlab, 并配置ldap认证
  5. MYSQL 1093 之You can't specify target table for update in FROM clause解决办法
  6. ntp测试
  7. 数据库分库分表中间件:Mycat;分布式数据库;mysql的分布式事务
  8. arcgis server 10 for java 8399根目录是404的提示取消,并跳转到 地图目录 /arcgis/rest/services下
  9. 再议FastReport.NET(转)
  10. [leetcode]Candy @ Python