Python学习笔记 | 编码和文件读写

基于Python3版本的学习。

编码

编码的本质: 就是让只认识0和1的计算机,能够理解我们人类使用的语言符号,并且将数据转换为二进制进行存储和传输。
这种从人类语言到计算机语言转换的形式,就叫做编码表 ,它让人类语言和计算机语言能够一一对应起来。

二进制

二进制数据的表示法:二进制数据也是采用位置计数法,其位权是以2为底的幂。

二进制 十进制
00 0
01 1
10 2
11 3

所以两个二进制位可以表示十进制的0,1,2,3四种状态。
当三位二进制时,可表示十进制表示0~7八种状态。

二进制 十进制
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

当有八位二进制时,我们就能表示2的8次方,也就是256种状态,它由8个0或1组成。

二进制 十进制
00000000 0
11111111 255

我们都清楚:计算机里最小的存储单位,叫做 ,也叫比特(bit) ,用来存放一位0或1。

规定:8个比特构成一个字节(byte) ,这是计算机里最常用的单位。

bit和byte长得有点像,可别混淆!1 byte = 8 bit,也就是1字节等于8比特。

顺便提下:
8进制是用0,1,2,3,4,5,6,7;
16进制是用0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f来表示。

编码表

编码表可以这样理解:为了让人与计算机互相沟通而不造成混乱,就必须使用相同的编码规则。如果使用了不同的编码规则,那就会彼此读不懂,这就是“乱码”的由来。

美国首先出台了ASCII编码(读音:/ˈæski/) ,统一规定了常用符号用哪些二进制数来表示。

因为英文字母、数字再加上其他常用符号,也就100来个,因此使用7个比特位(0~127,最多表示128位)就够用了,所以一个字节中被剩下的那个比特位就被默认为0。

这套编码表传入欧洲,把最后一个比特位也编进来。因此欧洲普遍使用一个全字节(8个比特位)进行编码,最多可表示256位(0~255)。

中国汉字繁多,于是中国科学家重写了一张编码表,也就是GB2312 ,它用2个字节,也就是16个比特位,来表示绝大部分(65535个)常用汉字。
后来,为了能显示更多的中文,又出台了GBK标准

为了各国沟通的便利,Unicode(万国码) 应运而生,这套编码表将世界上所有的符号都纳入其中。每个符号都有一个独一无二的编码,现在Unicode可以容纳100多万个符号,所有语言都可以互通,一个网页上也可以显示多国语言。

而Unicode有时太过浪费内存,比如要存储A,原本00010001就可以了,现在偏得用两个字节:00000000 00010001才行,这样对计算机空间存储是种极大的浪费。

科学家们又提出了:UTF-8(8-bit Unicode Transformation Format) 。它是一种针对Unicode的可变长度字符编码,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,而当字符在ASCII码的范围时,就用一个字节表示,所以UTF-8还可以兼容ASCII编码。

Unicode与UTF-8的关系:Unicode是内存编码的规范,而UTF-8是如何保存和传输Unicode的手段。

编码表 适用性 特点
ASCII码 英文大小写、字符,不支持中文 美国发明的,占用内存小
GB2312码、GBK码 支持中文 中国自主研发,GBK码是GB2312码的升级
Unicode码 支持国际语言 占用内存大,适用性强。在ASCII码前补8位就成了Unicode码
UTF-8码 支持国际语言 是Unicode码的升级,占用内存小

实际使用情况
1、 计算机是有自己的工作区的,这个工作区被称为“内存”。数据在内存当中处理时,使用的格式是Unicode,统一标准。
在Python3当中,程序处理我们输入的字符串,是默认使用Unicode编码的,所以你什么语言都可以输入。

2、数据在硬盘上存储,或者是在网络上传输时,用的是UTF-8,因为节省空间。
不必操心如何转换UTF-8和Unicode,当我们点击保存的时候,程序已经“默默地”帮我们做好了编码工作。

3、一些中文的文件和中文网站,还在使用GBK,和GB2312。

encode()编码函数

编码,即将人类语言转换为计算机语言,就是编码encode()
其实本质就是把str(字符串)类型的数据,利用不同的编码表,转换成bytes(字节)类型的数据。

用法表示:‘你想编码的内容’.encode(‘你使用的编码表’)

print('吴枫'.encode
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值