美文网首页
Python的编码问题

Python的编码问题

作者: snowdenet | 来源:发表于2016-01-21 14:50 被阅读0次

    问题:

    初学Python开发,今天拿简书小试了一下网络爬虫强大的Requests库:

    import requests
    r = requests.get('http://www.jianshu.com/')
    print(r.status_code)
    print(r.headers['content-type'])
    print(r.text)

    在Windows 10 的命令行中执行,没想到结果居然报错:

    200
    text/html; charset=utf-8
    Traceback (most recent call last):  File "C:/Users/team/spider.py", line 8, inprint r.text
    UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 36179: illegal multibyte sequence

    这么简单的代码,还碰到编码错误问题。挪到IDLE去检查一下,print(r.text)居然可以正常执行。

    到baidu去google了一下,原来是由于本地系统是Windows中的cmd,默认codepage是CP936,即GBK的编码,所以需要将接收数据先编码为GBK,然后再在cmd中显示出来,然后由于r.text中包含一些GBK中无法显示的字符,导致此时提示“’gbk’ codec can’t encode”的错误的。最大的可能就是接收数据中Unicode类型的字符中,包含了一些无法转换为GBK编码的一些字符。

    在对unicode字符编码时,添加ignore参数,忽略无法编码的字符,这样就可以正常编码为GBK格式,正确输出了。

    import requests
    r = requests.get('http://www.jianshu.com/')
    print(r.status_code)
    print(r.headers['content-type'])
    print(r.text.encode('gbk','ignore'))

    或者将其转换为GBK编码的超集GB18030 (即,GBK是GB18030的子集):

    print(r.text.encode('gb18030'))

    看来还是在windows下面编写python脚本,编码问题很严重。

    相关文章

      网友评论

          本文标题:Python的编码问题

          本文链接:https://www.haomeiwen.com/subject/zjxrcttx.html