Python-字符串编码

1. python中的编码

  • 在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言
  • Python的字符串类型是str,在内存中以Unicode表示
  • 在网络传输数据,或者保存到磁盘时,需要将数据转换为以字节为单位的bytes
  • 在操作字符串时,我们经常遇到str和bytes的互相转换,为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换

2. ord()、chr()

'''
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
'''
print(ord('a')) # 97
print(ord('A')) # 65
print(ord('0')) # 48

print(chr(97)) # 'a'
print(chr(65)) # 'A'
print(chr(48)) # '0'

3. len()

# 计算 str 的字符数
print(len('acb')) # 3
print(len('中国')) # 2

# 计算 bytes 的字节数
print(len('abc'.encode('utf-8'))) # 3,经过UTF-8编码后,1个英文字符占用1个字节
print(len('中文'.encode('utf-8'))) # 6,经过UTF-8编码后,1个中文字符占用3个字节

4. 编码【str–>bytes】

'''
以Unicode表示的str通过encode()方法可以编码为指定的bytes
    -- 纯英文的str可以用ASCII或者UTF-8编码为bytes,结果是一样的,因为UTF-8兼容ASCII
    -- 含有中文的str可以用UTF-8编码为bytes
    -- 含有中文的str不可以用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错
'''

s1 = 'abc'
s2 = '大中国'

s1.encode('utf-8')
s1.encode('ASCII')
s2.encode('utf-8')
# s2.encode('ASCII') # 报错

5. 解码【bytes–>str】

'''
	bytes.decode('utf-8')
'''

s1 = 'abc'
s2 = '大中国'
b1 = s1.encode('utf-8')
b2 = s1.encode('ASCII')
b3 = s2.encode('utf-8')

s1 = b1.decode('utf-8')
s2 = b2.decode('ASCII')
s3 = b3.decode('utf-8')

你可能感兴趣的:(python)