这里写目录标题
概述
字节与文本的编码、解码
ASCII、UTF8等常用字符串编码
ord('A') #查询A的代码点
chr(104) #查询104对应的字符
chr(202) #拉丁码202对应的字符
ord('王')
ord('20248')
s1 = 'ABCD'
s1.encode('ASCII') #b'ABCD'
s2 = '啊哦'
s2.encode('ASCII') #UnicodeEncodeError
s2.encode('UTF-8') #b'\xe5\x95\x8a\xe5\x93\xa6'
s2.encode('UTF-16') #b'\xff\xfeJU\xe6T'
b1 = b'\xe5\x95\x8a\xe5\x93\xa6'
b1.decode('UTF-8') #'啊哦'
b1.decode('UTF-16') #'闥\ue58aꚓ'(乱码)
s3 = '哦啊'
s3.encode() #b'\xe5\x93\xa6\xe5\x95\x8a'默认使用utf-8
#查看电脑默认的编码方式
#import sys
#sys.getdefaultencoding()
open('data.txt', 'w',encoding='utf8').write('啊哦') #创建data.txt文件
open('data.txt', 'r',encoding='utf8').read() #读data.txt文件
open('data.txt', 'rb').read() #以字节形式读取
bytes('abc', 'ascii')
types('啊哦', 'utf8')
open('data2.txt', 'w').write('啊哦') #记事本打开data2.txt文件内容乱码 (默认GBK编码)
open('data2.txt', 'r', encoding'gbk').read() #'啊哦'
encode、decode默认utf-8。以文件形式操作默认为GBK
类型转换
bytes,str,bytearray之间的相互转换
open('data.txt', 'rb').read() #以字节形式读取
bytes('abc', 'ascii')
types('啊哦', 'utf8')
bytes([55, 66]) #b'7B'
b = b'abc' #将字节赋值给b
b[0] #'a'
s1 = 'abc'
s2 = '啊哦'
ba = bytearray(s1, 'utf8')
ba #bytearray(a'abc')
ba[0] #97
ba[0] = 98
ba #bytearray(b'bbc')
ba.append(100)
ba #bytearray(b'bbcd')
ba + b'C\n' #bytearraay(b'bbcdC\n')
ba.decode() #'bbcd' 解码
BOM处理
#假设
open('data.txt', 'r',encoding='utf-8').read() #返回'\ufeff啊哦'(含有字节顺序标记)
#但是文本文件内容为啊哦
open('data.txt', 'r',encoding='utf-8-sig').read() #返回'啊哦'
open('data3.txt', 'w', encoding='utf-8-sig').write('啊哦哦') #创建一个含有字节顺序标记的文件