概述
1、编码
- 不同的密码本之间不能互相识别
- 数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者存到硬盘中,必须是以非Unicode编码(utf-8,gbk等等)
(1)、ASCLL码:只包含英文字母,数字,特殊字符。
0000 0001(8位)
(2)、gbk:国标码,英文字母,数字,特殊字符和中文
一个英文字母:0000 0001(8位)
一个中文:0000 0001 0100 0001(16位)
(3)、Unicode:万国码,把世界上所有的文字都记录到这个密码本
起初一个字符用2个字节(不够用)
后来一个字符用4个字节(浪费)
(4)、UTF-8:升级,最少用一个字节表示一个字符
一个字节表示英文
两个字节表示欧洲文字
三个字节表示亚洲文字
示例:‘中国12he’ :GBK:8个字节
‘中国12he’ :UTF-8:10个字节
-
编码的进阶
-
content =‘hello’
- 内存中的编码方式:Unicode
- 表现形式:‘hello’
-
在存储或者转发时要转化成bytes(特殊的字符串类型)类型
-
bytes:
-
网络传输,磁盘存储
-
内存中的编码方式:非Unicode
-
表现形式:b‘hello’
-
b=b'hello' print(b,type(b)) #b'hello' <class 'bytes'> #这种方式b后边只能加ASCLL码里边的 s1='中国' b=s1.encode('utf-8') print(b) #b'xe4xb8xadxe5x9bxbd --bytes数据类型的中文表现形式
-
-
-
str <—> bytes
-
只能与字符串str进行互换,其他数据类型要先转化成str,在转化成bytes
-
str:文字文本 Unicode
-
bytes:字节文本 非Unicode
-
b1=s1.encoding(‘utf-8’)=
等价于b1=bytes(s1,encding=‘utf-8’)
-
s1 = '中国' b1 = s1.encode('utf-8') --编码 --指定转化类型utf-8 b1=b'xe4xb8xadxe5x9bxbd' s2=b1.decode('utf-8') --解码 --用什么编码编过来的,就用什么编过去
-
要想转化两种非Unicode编码,需要先转化为Unicode编码
-
最后
以上就是高挑纸鹤为你收集整理的python自学之路三(二):关于编码方面的知识的全部内容,希望文章能够帮你解决python自学之路三(二):关于编码方面的知识所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复