博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的编码问题
阅读量:6281 次
发布时间:2019-06-22

本文共 798 字,大约阅读时间需要 2 分钟。

在看《Dive Into Python》有一章是对XML的处理,其中写着

import sys

sys.setdefaultencoding('iso-8859-1')

 

而我使用urlopen写一个采集小程序时,遇上了一个编码问题。以抓取百度首页为例:

sock = urllib.urlopen("http://www.baidu.com/") htmlSource = sock.read() sock.close()
 
当打印htmlSource时,会发现出现乱码的情况了,原因是百度默认的编码是gb2312,而python默认的编码格式为ascii(可通过打印sys.getdefaultencoding() 显示出来)
 
为什么import sys后,然后使用sys.不会自动提示显示出setdefaultencoding呢?之后搜索了一下:
python的初始化脚本site.py会把sys模块的setdefaultencoding方法删除,python在初始化完毕之后,禁止用户改变默认编码。

以上内容引用至【】

 

还有就是在抓取到页面后,需要对页面进行一个解码动作(decode),完整的demo代码将会如下所示:

1: #coding:utf-8
2: import urllib
3: import sys
4: 
5: reload(sys)
6: 
7: sys.setdefaultencoding('utf-8')
8: 
9: print sys.getdefaultencoding()
10: 
11: sock = urllib.urlopen("http://www.baidu.com/")
12: htmlSource = sock.read().decode('GBK')
13: sock.close()
14: 
15: print htmlSource

转载地址:http://ggnva.baihongyu.com/

你可能感兴趣的文章
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>