python语言之字符串与字节
(一)字符串的本质
内存中总是存储解码以后的文本,编码只作用于文件存储和中间媒介转换
(二)常见的字符编码
#获得代码点
ord('A')
65
#从代码点获取对应字符
chr(65)
'A'
- ASCII(存储一个Byte 0-127)
- latin-1(存储一个Byte 128-255)
- UTF16 (两个字节存储字符)
- UTF32 (四个字节存储字符)
- UTF8 (可变字节)
(三)字节与文本的编解码
编码
转变为bytes
s1 = 'ABCD'
s1.encode('ascii')
b'ABCD'
s1 = '中国'
s1.encode('utf8')
b'\xe4\xb8\xad\xe5\x9b\xbd'
--------------------------------------------
#从文件中读取
open('data.txt','rb').read()
b'\xd6\xd0\xb9\xfa'
---------------------------------------------
bytes('中国','utf8')
b'\xe4\xb8\xad\xe5\x9b\xbd'
bytes([64,75,85])
b'@KU'
---------------------------------------------
b = b'abc'
type(b)
<class 'bytes'>
转变为bytearray
s1 = '中国'
ba = bytearray(s1,'utf8')
type(ba)
<class 'bytearray'>
ba
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd')
ba.append(21)#不能超过256
ba
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15')
ba + b'abc'
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15abc')
ba.decode('utf8')
'中国\x15'
不指定编码格式,系统默认采用utf8
往文件中写数据,默认编码格式为操作系统编码格式
解码
b = b'\xe4\xb8\xad\xe5\x9b\xbd'
b.decode('utf8')
'中国'
---------------------------------------------
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd\x15abc')
ba.decode('utf8')
'中国\x15'
(四)BOM处理
BOM:字节顺序标记
open('data.txt','W',encoding='utf-8-sig')
open('data.txt','r',encoding='utf-8-sig')