1. pthon字符类型
str 字符串(Unicode码):是Unicode标准并且可以选择不同编码表示,如utf- 等。
byte 字节(字节码):二进制串的十六进制表示
bytearray 字节数组
2. 常见编码格式
编码格式 | 存储方式 |
ASCII | 存储在一个字节Byte (8bit)0-127,仅能表达英文、数字和基本的标点符号 |
latin-1 | 存储在一个字节Byte 128-255 |
UTF-8 | 可变字节 |
UTF-162 | byte存储字符,另加2byte作为标识 |
UTF-3 | 24byte |
Unicode码 | 每个字符用2个或更多字节表示,可表示全球所有的语言 |
补充:
- 为了处理英文字符,产生了ASCII码。
- 为了处理中文字符,产生了GB2312。
- 为了处理各国字符,产生了Unicode。
- 为了提高Unicode存储和传输性能,产生了UTF-8,它是Unicode的一种实现形式。
内置函数ord和chr
///获取A字符的代码点
>>>ord('A')
65
///获取65代码点对应的字符
>>>chr(65)
A
3. 编码和解码
encode编码、decode解码、bytes编码
- str1.encode(‘常见编码格式’):方法将Unicode编码字符转化为其他编码字符。*
>>>str2='你把我编码成机器理解的字节'
>>>str2.encode('utf-8')
///b表示后面引号里的数据类型是bytes,即字节
b'\xe4\xbd\xa0\xe6\x8a\x8a\xe6\x88\x91\xe7\xbc\x96\xe7\xa0\x81\xe6\x88\x90\xe6\x9c\xba\xe5\x99\xa8\xe7\x90\x86\xe8\xa7\xa3\xe7\x9a\x84\xe5\xad\x97\xe8\x8a\x82'
- 字节码.decode('常见编码格式):将其他编码字符转化为Unicode编码字符。
>>>a1=b'\xe4\xbd\xa0\xe6\x8a\x8a\xe6\x88\x91\xe7\xbc\x96\xe7\xa0\x81\xe6\x88\x90\xe6\x9c\xba\xe5\x99\xa8\xe7\x90\x86\xe8\xa7\xa3\xe7\x9a\x84\xe5\xad\x97\xe8\x8a\x82'
>>>a1.decode('utf-8')
'你把我编码成机器理解的字节'
- bytes(unicode编码字符串, ‘常见编码格式’)
bytes('你把我编码成机器理解的字节','utf-8')
b'\xe4\xbd\xa0\xe6\x8a\x8a\xe6\x88\x91\xe7\xbc\x96\xe7\xa0\x81\xe6\x88\x90\xe6\x9c\xba\xe5\x99\xa8\xe7\x90\x86\xe8\xa7\xa3\xe7\x9a\x84\xe5\xad\x97\xe8\x8a\x82'
4. 去除UTF-8的BOM前缀
encoding=‘utf-8-sig’
///添加BOM前缀
open('data3.txt','w',encoding='utf-8-sig').write('haha')
4
///去除BOM前缀
open('data3.txt','r',encoding='utf-8').read()
'\ufeffhaha'
open('data3.txt','r',encoding='utf-8-sig').read()
'haha'