Python爬虫

Python爬虫 知识量:11 - 28 - 71

8.1 Python的字符编码><

什么是字符编码- 8.1.1 -

字符编码(Character Encoding)是指一种将字符从一种表示方式转换为另一种表示方式的规则或系统。具体来说,它是一种映射规则,可以根据这个规则将某个字符映射成其他形式的数据,以便在计算机中存储和传输。常见的字符编码包括ASCII码、GBK、GB2312、Unicode码和UTF-8等。

ASCII码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

对于中文字符,由于ASCII表里连一个偏旁部首也没有,因此需要采用两个字节来表示,而且还不能和ASCII编码冲突,所以有了GB2312编码,用来把中文编进去。

然而,由于各个国家都有自己的编码,就不可避免会有冲突,因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题。

基于节约的原则,出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节。

Python的字符编码- 8.1.2 -

Python中常见的字符编码包括ASCII、UTF-8和GBK等。

  • ASCII码:是最通用的单字节编码系统,主要用于显示现代英语和其他西欧语言。在Python中,字符串的默认编码方式就是ASCII。

  • UTF-8编码:是一种可变长度的字符编码,可以使用1-6个字节表示一个符号,根据不同的符号使用不同数量的字节。UTF-8编码具有可读性、可扩展性和兼容性等优点,成为互联网上最流行的字符编码。在Python中,可以使用encode()方法将字符串转换为UTF-8编码的字节串,例如:s.encode('utf-8')。

  • GBK编码:是一种用于简体中文的字符编码,使用两个字节来表示一个字符。在Python中,可以使用encode()方法将字符串转换为GBK编码的字节串,例如:s.encode('gbk')。

Python编码的转换- 8.1.3 -

在Python 3中,字符串有两种类型:str和bytes。

  • str:这是Python 3中的文本字符串类型,用于表示Unicode字符。Python 3中的所有字符串都是Unicode,这使得Python 3能够处理各种语言的字符,包括中文、日文、阿拉伯文等。

  • bytes:这是二进制数据类型,用于表示不可变序列的字节。通常用于处理图像、音频、加密数据等二进制数据。

在Python 3中,字符串和字节之间的转换可以通过.encode()和.decode()方法进行。.encode()方法将字符串(str)转换为字节(bytes),而.decode()方法将字节(bytes)转换为字符串(str)。

例如:

# 字符串(str)转字节(bytes)  
s = "你好"  
b = s.encode('utf-8')  # 将字符串编码为UTF-8格式的字节串  
print(b)  # 输出:b'\xe4\xbd\xa0\xe5\xa5\xbd'  
  
# 字节(bytes)转字符串(str)  
b = b'\xe4\xbd\xa0\xe5\xa5\xbd'  
s = b.decode('utf-8')  # 将字节串解码为字符串  
print(s)  # 输出:你好

在处理网络数据、文件读写、加密解密等需要处理二进制数据的场景时,经常会用到bytes类型。而其他大多数情况下,处理的是文本数据,所以主要使用str类型。