字符编码问题

一.文本编辑器存原理

结论:在编写py的程序的时候,是没有语法的限制的,编辑的结果跟编写一个普通的文本文件是没有任何区别。只有把py程序交给python解释器并且在运行的第三个阶段才有了语法的意义

二.python解释器执行python程序的原理

第一阶段:先启动python解释器这个软件
第二阶段:把py文件读取内存
第三阶段:解释执行,识别语法

三.什么是字符编码

人类的字符翻译成0或1的数字,翻译的过程必须遵循一个标准:字符与数字一一对应的关系。这个标准称之为字符编码表。

  • SCCII码
    8bit=1bytes 一个英文字符占用1个字节
  • GBK
    16bit=2bytes 2个字节表示一个中本字符,还是用一个字节表示英文字符
  • unicode(内存中固定的编码)
    硬盘上的GBK编码转换成二进制再转换成内存上的Unicode编码的二进制
    然后可以在任何国家的电脑上都可以读取
  • tf-8
    1个字节表示一个英文字符,3个字节表示一个中文字符
    unicode的转换版本
unicode
现阶段的硬盘都是用 utf-8的,内存中统一采用unicode,浪费空间来换取可以转换成任意编码(保证不乱码)硬盘可以采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。
	我们能控制的只是存在硬盘上的编码
ppython3解释器,默认utf-8编码
python解释器,默认ASCII编码
文件头的作用#coding:utf-8  告诉python解释器,用指定的字符编码
#-*-coding:utf-8-*-

四.执行python程序第三阶段发生的事

会识别python语法,定义的字符串类型又涉及到字符编码的概念

python2:
字符串分为两个形式:
    x='上'  python2的str类型会按照文件头指定的编码来存'上'

python3
    str:被存成了unicode

五.转换方法

 unicode--->编码encode--->gbk
gbk----->解码decode----->unicode

总结:

保证不乱码的核心法则就是:
字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值