zoukankan      html  css  js  c++  java
  • 字符编码

    字符编码

    常见字符编码

    ascii:只认识英文和特殊符号,1bytes 256完全够用

    gbk:国标码,认识中文和英文,1bytes存英文,2bytes存中文,65536完全够用。

    utf8:Unicode Transformation Format,即unicode的转换格式。使用utf8是时代的进步,是良性的进化,几十年后老的软件抛弃掉后,内存里面可能全部都是utf8编码了。

    utf-8是针对Unicode的可变长度字符编码:一个英文字符占1Bytes,一个中文字符占3Bytes,生僻字用更多的Bytes存储

    unicode:万国码,90年研发,python89年推出,所有的编码都认识,目前内存中的统一编码。固定用2bytes存放一个字符

    其他编码,每个国家都有自己的编码。

    所有国家的软件分别用自己国家的编码编写,内存统一用unicode后,所有软件都可以使用,统一转为unicode

    unicode----内存运算编码,大多数文件是英文的,固定的2bytes加重了IO效率,所以出内存不允许为unicode编码,要编码为其他编码,多为utf8编码。

    utf8--------网络传输或数据存储编码

    字符串源码文件读取,字符串数据类型的存储

    python文件读取与执行

    python2解释器默认以ASCII方式解码python文件,从硬盘读入内存。

    python3解释器默认以utf8方式解码python文件,从硬盘读入内存。内存中都是unicode编码。中间的转换由os自动帮你完成。

    python2的为了兼容当下的措施:

    1.文件头加# coding:utf8或其他,让解释器以文件头执行的方式来读取接下来的字符串源码。

    因为第一行是英文,无论什么编码都可以读懂。

    2.字符串前面加u,a=u“上”,让字符串在内存中以unicode方式存在

    字符串数据类型


    当字符串源码文件读入内存后,python解释器开始对源码语法分析,申请内存存放数据。

    为字符串申请内存的时候,python3直接用unicode编码为字符串在栈中申请内存,所以python3用户不用对字符串做什么。

    python2是89年的版本,而unicode是90产生的标准,python2在内存中对字符串以ascii编码存放,为了兼容当下,python2在字符串前面加u。

    结论:

    python3不用你做任何事,utf8方式读取源码文件,字符串以unicode编码存放字符串。

    python2指定文件头#coding:utf8读取源码文件,字符串前面加u,以unicode编码存放字符串。

    看十遍不如自己写一遍!巩固基础,纵横开拓!
  • 相关阅读:
    Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Clien
    docker pull下载镜像报错Get https://registry-1.docker.io/v2/library/centos/manifests/latest:..... timeout
    Maven 插件之 docker-maven-plugin 的使用
    Windows10下的docker安装与入门 (一)使用docker toolbox安装docker
    解决IntelliJ IDEA 创建Maven项目速度慢问题
    svn检出maven项目的步骤
    学习RabbitMQ(三):AMQP事务机制
    TX-LCN分布式事务Demo实战
    SQLite -创建数据库
    备忘录模式
  • 原文地址:https://www.cnblogs.com/gyxpy/p/14417670.html
Copyright © 2011-2022 走看看