前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python的编码问题

Python的编码问题

作者头像
meteoric
发布2018-11-16 15:18:33
6150
发布2018-11-16 15:18:33
举报
文章被收录于专栏:游戏杂谈游戏杂谈游戏杂谈

在看《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在初始化完毕之后,禁止用户改变默认编码。

以上内容引用至【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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档