python3字符串以及部分字符集

来源:互联网 发布:计算量子电路矩阵 编辑:程序博客网 时间:2024/06/05 21:17

我们通过requests.content的方式获取到html内容是bytes类型的,需要使用decode()方法将bytes类型转成str类型。那么问题来了,什么是bytes类型,什么是str类型?

  • bytes类型:二进制
    互联网上的数据都是以二进制的方式进行传输的

  • str类型:Unicode的呈现形式

字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等

字符集(Character)是多个字符的集合

字符集包括:ASCII字符集、GB2312字符集、Unicode字符集等

ASCII编码是1个字节,而Unicode编码通常是2个字节

UTF-8是Unicode的实现方式之一。UTF-8是一种变成的编码方式,可以是1,2,3个字节

谈谈自己的理解。

首先是ASCII码,全称叫做美国信息交换标准代码。在计算机中,所有的数据在存储和运算时都要使用二进制表示。ASCII码就规定了哪些二进制数表示哪些字符,比如说二进制01000001,也就是十进制的65就代表大写的‘A’。起初,计算机只有在美国等少数国家存在,这些国家基本使用英语。使用单字节编码,一个字节是由8位0和1组成,所以单字节能表示2的8方,也是256个字符,对于这些国家,单字节编码就足够了。

后来,计算机发展到其他国家。ASCII码只能表示256个字符,中国汉字有7000多个,常用汉字也有3000多个,所以说中国,需要有自己的编码方式,出现了GB2312等一些编码方式。当然还有一些其他国家,比如说俄罗斯使用俄语,日本使用日语,他们也有自己国家的编码方式。但是,这种情况下,各个国家之间进行信息交流,使用起来很不方便。

美国使用ASCII码,中国使用GB2312字符集等等。这个时候,国际组织说,我们统一一下,使用两个字节,制定一套Unicode码,能表示65536个字符,可以容纳世界上所有文字和符号的字符编码方案。这样,问题就不就解决了?于是诞生了Unicode,但是Unicode并没有流行起来。因为有些国家,比如说美国,使用单字节,就可以表示所有的英语用到的数字,字母,特殊符号等。(我使用一个字节就足够了,为啥要使用两个字节)。这个时候出现了UTF-8,UTF-8是Unicode的实现方式之一。我所理解的UTF-8,叫做可变长字节编码,比如说,美国使用单字节,中国使用两个字节等。

上面是我对ASCII,GB2312,Unicode,UTF8字符集出现的一点简单理解。现在我们经常使用UTF-8字符集。

最后,在python3中,bytes和str如何转化呢?

  • 使用decode()方法将bytes转为str

  • 使用encode()方法将str转为bytes


附一下廖雪峰的官方网站-关于字符串和字符编码的讲解,很清楚。(自己上面写的,一直忘了从哪看的,原来是从廖老师网站上看的,哈哈哈)
字符串和编码

原创粉丝点击