开发者社区 问答 正文

python3怎么定义编码

python3怎么定义编码

展开
收起
云计算小粉 2018-05-10 20:10:36 2210 分享 版权
1 条回答
写回答
取消 提交回答
  • 最方便的语言,最简洁的简介

    python3的字符串编码问题

    在Python3中,有两种默认的字符编码类型,bytes和str。str表示字符Unicode字符,在Python命令行中,Unicode字符会默认的转换成可显示的字符串格式,而不会显示其本身的二进制码。我们直接用单引号或者双引号定义的字符串就是str类型

    我们可以通过ord函数获取其对应的十进制数字,并通过char方法获取对应的Unicode字符。如果我们知道其十六进制代码,我们还可以直接通过十六进制代码定义字符串其格式为uxxxx:

    c='好'
    d = ord(c)
    chr(d)
    print(d)
    hex(d)
    1
    2
    3
    4
    5
    bytes表示字符在某种编码下的二进制码,如果知道某个字符串在某个字符编码下的二进制码,我们可以直接使用b’uxxxx’的形式来定义bytes二进制码,与str类型的字符串相比,前面多了一个字母b,表示其类型为bytes。

    str类型的字符串可以通过encode方法转换为bytes二进制码,同样bytes二进制码可以通过decode方法转换为str类型的字符串:

    c='hello'
    d = c.encode('unicode escape')
    d.decode('unicode escape')
    print(d)
    1
    2
    3
    4
    读取文件和网络资源的时候,是bytes对象,需要先解码,就是执行decode,如果我们不确定当前文件的字符编码,我们可以使用chardet.detect获取对应的字符编码:

    import chardet
    a = b'hello,world'
    print(a)
    charset = chardet.detect(a)
    print(charset)
    b = a.decode(charset['encoding'])
    print(b)
    1
    2
    3
    4
    5
    6
    7
    文件写入时的字符编码:在文件写入时,我们只能写入bytes对象,因此,我们需要将str对象以utf-8编码编码成bytes对象,再进行存储。

    2019-07-17 22:21:17
    赞同 展开评论
问答分类:
问答标签:
问答地址: