zoukankan      html  css  js  c++  java
  • Python遇到字符编码出问题的一个相对万能的办法

    在使用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分钟就能搞定。

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


    独立技术博客请戳->https://www.kingname.info

    两个博客内容相同。转载请注明出处。

  • 相关阅读:
    2017ICPC沈阳赛现场赛 L-Tree (dfs)
    2019西北工业大学程序设计创新实践基地春季选拔赛 D(卢卡斯定理)
    Codeforces Round #454 (Div. 1) CodeForces 906D Power Tower (欧拉降幂)
    模板
    洛谷
    模板
    洛谷
    洛谷
    模板
    模板
  • 原文地址:https://www.cnblogs.com/xieqiankun/p/python_encode.html
Copyright © 2011-2022 走看看