python乱码问题之爬虫篇
2024-08-28 23:06:19
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
解决办法
- 替换掉不能解析的字符
- 设置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'))
- 永久性修改python默认编码 http://pako.iteye.com/blog/1153343
import sys
print(sys.setdefaultencoding()) #utf-8
文件写入编码错误
print有坑就算了,writelines写入文件也报这个gbk无法编码的问题
解决办法:
//设置编码就搞定了
html=open(line,'w',encoding='utf-8')
### 总结
这些编码问题其实是一些函数在使用时使用了默认的编码,相应的传入和改变其使用的编码就搞定了。
最新文章
- MVC
- tomcat manager配置
- Elasticsearch DSL中Query与Filter的不同
- 装饰者模式(Decorator pattern)
- Java ConcurrentModificationException异常原因和解决方法
- Hibernate Annotation笔记
- wpf mvvm MenuItem的Command事件
- 10.cadence.自定义焊盘的创建[原创]
- sql - 查询所有表中包含指定值
- spring boot + velocity中文乱码解决方式
- MySQL插入数据时插入无效的列
- 设置TIMESTAMP和DATETIME的自动初始化及自动更新
- Python 多进程和进程池
- iOS 开发笔记 - 导航到地图
- Pika的设计及实现
- php 使用table方式导出excel文件
- oracle dblink 查询 tns:无法解析指定的连接标识符
- Python Map 并行
- 左值&;右值
- Mac下使用Charles抓包Android
热门文章
- 【GitLab】【GitHub】GitLab和GitHub的双向同步
- Windows 同一时候开启核心显卡与独立显卡(不接显示器启动核芯显卡)
- Linux内核:分析coredump文件 - 内核代码崩溃
- 本地docker搭建gitlab, 并配置ldap认证
- MYSQL 1093 之You can't specify target table for update in FROM clause解决办法
- ntp测试
- 数据库分库分表中间件:Mycat;分布式数据库;mysql的分布式事务
- arcgis server 10 for java 8399根目录是404的提示取消,并跳转到 地图目录 /arcgis/rest/services下
- 再议FastReport.NET(转)
- [leetcode]Candy @ Python