python3 字符编码

机器识别的语言

二进制(0和1))

人类识别的语言

中文、英文等等

我们人类怎么才能跟机器交流?

通过一张编码表把我们人类的每个字对于到机器识别的二进制
h=1101000(十进制104)

编码表

编码表随着时间的的更新,出现了多个版本

  • ASCII:数字 32–126 分配给了能在键盘上找到的字符
  • GBK:基于上代,增加支持了中文
  • Unicode:基于上代,支持了基本所有的语言(万国码)
  • UTF-8:基于Unicode做了优化,优化区别了不同语言的占用字符个数(关系到容量的大小,从而可能导致的读写问题)

编码和解码

读取:解码操作

读取编码只要能匹配到解码表就能读取到数据

  • # coding:utf-8:设置python的默认读取python代码的编码表

  • 不设置的话,默认读取的是系统的默认编码格式,因为数据先被系统调用到内存,系统层会进行读取,如果发现第一行是coding:utf-8就会选择utf-8进行解码(所以必须要加上
    在这里插入图片描述
    在这里插入图片描述

存储:编码操作

存储编码错误可能导致数据丢失

  • 内存存储

Unicode有对应每个编码表的转换方式,所以需要编码转换都是基于Unicode
内存固定使用的是Unicode万国码,程序运行后,存储的编码格式都是Unicode
由于年代不同就会存在不同的编码表数据,如果之前使用的BGK如果需要被读取到,就需要进行BGK–Unicode转换编码的过程,再由我们现在的编译器utf-8进行读取,也产生一次转换编码

  • 硬盘存储
    硬盘编码存储都是基于编译器的操作来完成,由内存的Unicode编码转换成自己设置的编码表进行存储,读取的话也需要进行匹配,不然就会存在乱码问题。
    在这里插入图片描述
    总结:数据存储(读写)编码方式都是需要提前设定,不能通过编译器或者系统默认的编码表来避免错误,因为一个数据不会只存在一个地方运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值