- 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kun1280437633/article/details/80640292
ascii
ISO-8859-1
通常叫 做Latin-1
,向下兼容ASCII,此字符集支持部分于欧洲使用的语言GB2312/GBK
这就是汉字的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。unicode
万国码
2、Unicode与UTF之间的关系
UTF
Unicode Transformation Format,通用传输格式UTF-8
8-bit Unicode Transformation Format
UTF-8 是一种 Unicode 的编码方式,主要作用对 Unicode 码的数据进行转换,转换后方便存储和网络传输
3、python3中的字节串与字符串之间的区别
字节串(二进制数据,bytes) utf8
字符串(Unicode码数据,2个字节作为一个字)
demo:
a = '中文' type(a)=> str len(a) = 2
>>> f = open('./1.txt','w')
>>> f.write(a)
2
>>> f = open('./1.txt','w',encoding='utf-8')
>>> f.write('中文aaa中文')
2
f = open('./1.txt','r')
data = f.read()
print(data) # 中文aaa中文 类型 字符串 长度7
f = open('./1.txt','rb')
data2 = f.read()
print(type(data2)) # <class 'bytes'>
print(len(data2)) # 15 utf-8编码的二进制一个汉字占3个字节,英文一个字节
print(data2) # b'\xe4\xb8\xad\xe6\x96\x87aaa\xe4\xb8\xad\xe6\x96\x87'
网络请求传输过来的存储
content_bytes = response.read() # utf-8
content = content_bytes.decode('utf-8')
# 'wb' 表示 二进制写入
with open('sample1.html','wb') as f:
f.write(response.read())
# 'w' 表示字符串写入
str = response.read().decode('utf-8')
with open('sample2.html','w',encoding='utf-8') as f: # encoding以什么样的方式写入
f.write(str)
4、python3中编码
二进制 -> 转换 -> 字符串 需要解码 decode
字符串 -> 转换 -> 二进制 需要解码 encode
python3 内存中使用的字符串全部是 unicode
码,但是网络传输的数据或者从磁盘读取的数据是把 unicode
码转换过的数据,通常情况下可能是 utf-8
格式的数据,所以如果从网络中读取或者磁盘中读取其实就是把 utf-8
格式的数据解码成 unicode
码数据,相反如果想把内存中 unicode
码数据存储到磁盘或者网络中需要对 unicode
码进行编码,通常可以采用 utf-8
的形式进行编码
5、编码总结