博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python遇到字符编码出问题的一个相对万能的办法
阅读量:4599 次
发布时间:2019-06-09

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

在使用Python做爬虫的过程中,经常遇到字符编码出问题的情况。

UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 0: ordinal not in range(128)

针对这种情况,网上已经有很多原理性的分析了,我在此就不一一列举。然而,我相信很多人,即便看完原理以后也不知道怎么解决。

 

我自己琢磨出一种快速解决的方法:

1 def get_page_sourse(url):2     req = urllib2.Request(url)3     for key in headers:4         req.add_header(key,headers[key])5         content = urllib2.urlopen(req).read()6         return content

 这个函数使用urllib2扒取了一个网页的源代码。并返回了这个源代码。当我们使用文件操作准备把content的内容写到一个txt文件中时,就会出现编码错误。

在这种情况下,如何快速的排除问题?

 

只需要将最后一行改成下面这样就可以了。

return content.decode('A','ingore').encode('B','ignore')

这里,A和B分别可以使gbk, gb2312,utf-8,它们排列组合一下,一共只有6种组合方式

例如:

return content.decode('gbk','ingore').encode('utf-8','ignore')  return content.decode('utf-8','ingore').encode('gb2312','ignore') ...

我使用这种方式,解决了所有的我遇到的Python的编码错误。虽然是一个一个的试,但是也用不了2分钟就能搞定。

至于背后原理什么的,程序跑通了以后再慢慢研究吧。

posted on
2014-12-13 20:05 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/xieqiankun/p/python_encode.html

你可能感兴趣的文章
C#知识点总结【1】
查看>>
BZOJ 1257: [CQOI2007]余数之和
查看>>
20155235 2016-2017-2 《Java程序设计》第六周学习总结
查看>>
H3C VLAN 配置
查看>>
BZOJ 1077: [SCOI2008]天平
查看>>
第一天
查看>>
团队冲刺第十天
查看>>
Gradle用户指南
查看>>
iOS审核策略重磅更新:Guideline 2.1批量拒审
查看>>
给 vue项目添加ESLint
查看>>
Swift3.0 功能一(持续更新)
查看>>
HexColor
查看>>
Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
查看>>
你会用swift创建复杂的加载动画吗(1)
查看>>
javabean转换为map对象
查看>>
CSS从入门到精通2.md
查看>>
【NOIP 2013】积木大赛
查看>>
HttpWebRequest调用WebService后台需要Session信息问题的解决办法
查看>>
SQL里的子查询
查看>>
Hdu5517 Triple
查看>>