Python中字符编码及转码
python 字符编码及转码
python 默认编码
- python 2.X 默认的字符编码是ASCII, 默认的文件编码也是ASCII
- python 3.X 默认的字符编码是unicode,默认的文件编码也是unicode
- 注意:unicode和utf-8之间可以不需要转换,可以直接互相答应,GBK如果需要和utf-8之间进行转换一定要通过unicode
首先说说python中二进制,八进制,十进制,十六进制之间的转换
--------------------------------------------------------------
# 十进制
print(100) #结果:100
--------------------------------------------------------------
# 十进制转二进
print(bin(100))
# 结果:0b1100100 0b表示二进制 1100100表示二进制的100
--------------------------------------------------------------
# 十进制转八进制
print(oct(100))
# 结果:0o144 0o表示八进制 144表示八进制的100
--------------------------------------------------------------
# 十进制转16进制
print(hex(100))
# 结果:0x64 0x表示十六进制 64表示16进制的100
--------------------------------------------------------------
ASCII: 占一个字节,英文字母及数字,基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,通用的单字符编码系统
Unicode(万国码): 两个字节,计算机上使用的字符编码
UTP-8(可变长的编码): 对Unicode编码的进行了压缩和优化
python3.x中,默认内存为Unicode编码
- 字符串转字节:用encode,指定'utf-8'字符集
- 字节码转字符串: 用decode,指定'utf-8'字符集
注意:当英文转成字节码时,b''后面还是英文,当中文转成字节码时,b''后面显示十六进制的字节码。注:encode为加密,decode为解密,使用哪种字符集加密就用哪种字符集解密
基于: UTF-8
a = 'Miss'
a = a.encode('utf-8')
print(a) # 结果:b'Miss'
b = '想'
b = b.encode('utf-8')
print(b) # 结果:b'\xe6\x83\xb3'
b = b.decode('utf-8')
print(b) # 结果:'想'
基于:GBK
a = 'Miss'
a = a.encode('GBK')
print(a) # 结果:b'Miss'
b = '想'
b = b.encode('GBK')
print(b) # 结果:b'\xcf\xeb'
b = b.decode('GBK')
print(b) # 结果:'想'