7.python3编码问题

620 查看

1.python 的文本数据和二进制数据

  • python的文本数据为String(默认编码utf-8),二进制数据为bytes。
    字符串由字符组成,字符则是与任何特定二进制表示无关的抽象实体。
    str可以编码成字节包,而bytes可以解码成字符串。
方法 含义
str.encode('gbk') 将默认的utf-8编码成gbk编编码,类型转为bytes
bytes.decode('gbk') 将gbk的编码转化为默认的utf-8编码,类型转为string

如图:


转换图
  • 注:有时候编码无法相互转化,于是就有了errors参数,常用参数 'ignore'(忽略错误)
    # 忽略转换过程中无法转换的字符
    str.encode('gbk','ignore')

2.检测所读数据是什么编码

  • 使用chardet第三方库。

2.1 安装

  • 使用pip直接安装。
    pipinstall chardet

2.2 使用

  • 使用chardet.detect(字节包)查看数据编码概率。
    import chardet
    import urllib.request
    code=urllib.request.urlopen("http://tieba.baidu.com/").read()
    print(chardet.detect(code))
    结果为:

    result

    这里检测出百度贴吧首页为GB2312编码,概率为0.99。这样基本确定这个页面的编码是GB2312了。