Python3中的编码
2021-07-15 01:07
标签:形式 数据 opened ascii 传输 类型 技术分享 open 流量 1.编码: 1.1 ASCII 一个字符占8位, 1.2 UTF-8 一个字符占8位 一个中文占24位 1.3 GBK 一个字符占8位 一个中文占16位 1.4 Unicode 1.4 只说Unicode的32位 一个字符占32位 一个中文字同样占32位 问题 : Unicode中的编码方式能否utf-8中的编码。 GBK的编码方式能否识别utf-8中的编码。 (1)各个编码之间的二进制是不能互相识别的,会产生乱码。 (2)传输或存储用的不是GBK就是UTF-8,或者其他的占用字节少的,unicode是不能用的,因为unicode占用32位,传输速率与流量消耗是极大的。GBK和UTF-8的转换需要借助于Unicode。 2. python3的字符串在内存中是unicode 32位编码方式。这样会产生的问题,一个文件传输过去后,对方不能直接用,因为是乱码的,所以必须要用UTF-8或GBK的方式进行转换存储传输,使用encode将str转换为bytes类型(将unicode转换为utf-8或gbk等),bytes类型可以是以utf-8或gbk或其他的编码进行编码存储的str。 2.1 bytes类型,一种数据类型。bytes类型的操作与字符串类似,与str的区别是编码方式不一样,str的编码是unicode,bytes的编码是gbk或utf-8的。所以想要存储或者传输一个字符串、文章等,必须将编码转换为gbk或utf-8或ascii或gbkgbk2312等(bytes是这样的编码方式),所以str想要传输和存储不能直接进行,需要转换成bytes类型在进行存储和传输。 对于英文: str: 表现形式 s = ‘alex‘,编码方式用的是unicode bytes:s = b‘alex‘,编码方式用的是utf-8、gbk等,但不是unicode 对于中文: str:表现形式 s = ‘中国‘,编码方式是unicode bytes:表现形式 s = b‘\xe4\xb8\xad\xe5\x9b\xbd‘,编码方式是utf-8、gbk。2个字节就是gbk,3个字节就是utf-8. 2.2 将unicode如何转换成utf-8或gbk等,也就是str与bytes之间的转换 Python3中的编码 标签:形式 数据 opened ascii 传输 类型 技术分享 open 流量 原文地址:https://www.cnblogs.com/whylinux/p/9537553.html 1 # encode 编码,将str转换为bytes,转换为bytes类型后,可以进行存储和传输
2 s1 = ‘alex‘
3
4 # 将s1这个在内存以unicode编码方式存储的字符串转换为bytes类型,使用utf-8编码方式存储的字符串s11
5 s11 = s1.encode(‘utf-8‘)
6
7 print(s11) # b‘alex‘
8
9 s2 = ‘中国‘
10
11 s22 = s2.encode(‘utf-8‘)
12 print(s22) # b‘\xe4\xb8\xad\xe5\x9b\xbd‘
13
14 # 将s1这个在内存以unicode编码方式存储的字符串转换为bytes类型,使用gbk编码方式存储的字符串s11
15 s22 = s2.encode(‘gbk‘)
16 print(s22) # b‘\xd6\xd0\xb9\xfa‘
上一篇:x86汇编语言
下一篇:Java String类