Python编码和文件操作

1.什么是编码,编码有什么用?

计算机的低层只能识别 0  1 的组合---也就是二进制的方式进行通信

哪么我们想要和计算机进行通信就会用到编码,编码相当于是一本翻译的字典

一个标准的对照关系,这个标准刚开始是ASCII码,ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

 这张表里有特殊符号、大写字母、小写字母、数字(这里注意下0~9的数字是字符),在这些字符左边都有一个10进制的数字。但是对于10进制来说计算机他也是不能理解的,因为他只能理          解0 1 ,但是10进制和2进制的转换就非常容易了!

举例来说:如果我在键盘上按一个A字母的时候那么实际是给计算机传输了一个数字65,通过这样的机制和计算机沟通,有了这个ASCII码表就可以和任何计算机进行沟通了。

 在存储英文的时一个字母等于1个字节,就是8位(bit),看下ASCII表中1个字节就可以表示所有的英文所需要的字符

但是怎们办你ASCII只支持英文?中国人就自己搞:就在原有的扩展位中,扩展出自己的gbk(GBK代表中文的Windows内码)、gb2312、gb2318字符编码,中国搞了其他国家看不过也要搞,搞着搞着乱码了

国际互联网组织看不过眼了,搞一个统一的Unicode“万国编码”,大家都用这个,(Unicode可以说是所有编码的集合)

Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),

即:2 **16 = 65536, 注:此处说的的是最少2个字节

这一看也不行啊,使用ASCII码如果是1M的话,那么Unicode存储至少2M可能还会更多。

为了解决Unicode存储至少2M出现了:UTF-8编码

UTF-8编码是Unicode编码的一个扩展集,UTF-8是个可变长的字符编码,默认所有的英文字符还是用ascii码来保存、所有的中文字符统一为3个字节

用Unicode后【英文为ascii码】【中文为3个字节】

Python编码转换

为什么要编码转换这个问题

比如说中国的一个游戏出口到日本,日本人的机器不支持GBK,这一看不全乱码了,怎么办呢,想要显示正常,哪怎么搞,日本人的机器不支持GBK只支持Unicode,支持Unicode哪这不就好办了,Unicode包含GBK,不就可以把GBK转换一下不就可以显示出来了。

Python3中的编码转换

 看上面这张图中你要想转码,必须要先解码为Unicode编码,才能转其他编码

import sys
print(sys.getdefaultencoding())  #查看默认编码

s = "你好"
s1 = s.encode("utf-8")  #python默认都是Unicode 这里编码为utf-8
print(s1)

s2 = s1.decode("utf-8")  #再解码为Unicode
print(s2)

# decode解码后都会变为Unicode
utf-8
b'\xe4\xbd\xa0\xe5\xa5\xbd'   #这个是bytes 类型,只能显示编码格式
你好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值