编码(encode和decode)
⼀. 编码
1. ASCII编码
ASCII是最早的计算机编码,包含了英⽂字母(⼤⼩写),数字,标点等特殊符号,⼀共128个码位,最多只能⽤8位来表⽰(⼀个字节),ASCLL码最多256个位置,⽆法提供中国的汉字.
2. GBK编码
GBK是国标码,占两个字节(16位),虽然位置增多了,但还是⽆法将汉字全部存储.
3. unicode
unicode是万国码,占4个字节(32位),有40多亿个位置,远远⼤于中国的汉字数.太浪费.
4. utf-8
utf-8是⽬前使⽤最多的编码,每个字符⾄少占8位.
英⽂:⼀个字节(8 bit). 欧洲⽂字:两个字节(16bit). 中⽂:三个字节(24bit)
⼆. encode和decode
1. encode()
encode()是编码, 编码之后的数据是bytes类型的数据.格式:b'(英⽂),b'\x(中⽂)
a = "hello"
de("GBK")) #b'hello'
de("ASCII")) #b'hello'
de("UTF-8")) #b'hello'
b = "今天下⾬了"
de("GBK")) #b'\xbd\xf1\xcc\xec\xcf\xc2\xd3\xea\xc1\xcb' 10个字节
de("ASCII")) #报错
de("UTF-8")) #b'\xe4\xbb\x8a\xe5\xa4\xa9\xe4\xb8\x8b\xe9\x9b\xa8\xe4\xba\x86' 15个字节
注:英⽂编码之后的结果和源字符串⼀致. 中⽂编码之后的结果根据编码的不同. 编码结果也不同. ⼀个中⽂的UTF-8编码是3个字节. ⼀个GBK的中⽂⽂编码是2个字节. ASCII码没有中⽂.编码之后的类型就是bytes类型.
2. decode()
接收对⽅的编码,我们得到的也是bytes类型,需要进⾏解码来获取原来的字符串.decode()是⽤来解码的.
bs = b'\xbd\xf1\xcc\xec\xcf\xc2\xd3\xea\xc1\xcb' #不要带引号,直接把bytes给赋值
print(bs.decode("GBK")) #今天下⾬了
print(bs.decode("UTF-8")) #报错,⽤什么编码就要⽤什么解码.
GBK和UTF-8是不可以互相转换的,但是可以通过Unicode来转换.
bs = b'\xbd\xf1\xcc\xec\xcf\xc2\xd3\xea\xc1\xcb' #不要带引号,直接把bites给赋值
a = bs.decode("GBK") #今天下⾬了
unicode汉字
de("UTF-8")) #b'\xe4\xbb\x8a\xe5\xa4\xa9\xe4\xb8\x8b\xe9\x9b\xa8\xe4\xba\x86' 15个字节
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论