• Python3


    计算机采用 8 bit(比特,计算机最小表示单位) = 1 byte(字节,计算机最小存储单位),一个字节能表示的最大的整数就是 255(二进制11111111 = 十进制255),如果要表示更大的整数,就必须用更多的字节,比如两个字节可以表示的最大整数是 65535 。

    ASCII (8位)编码包括大小写英文字母、数字和特殊字符,总共256(255+数字0,一共256)个。

    中文编码格式的发展历程是在 ASCII 的基础之上经历了 GB2312(7K+)、GBK1.0(2W+)和 GB18030(27W+)。

    Unicode (16位)把所有语言都统一到一套编码里,解决了乱码的问题,但造成了存储空间和网络传输的浪费,因此 Unicode 转化成了可变长编码的 UTF-8 编码。Python3 源码文件默认使用 UTF-8 编码,可以正常解析中文,无需指定 UTF-8 编码。

    ASCII编码 GBK编码 Unicode编码 UTF-8编码
    英文 1btye 1btye 2byte 1byte
    中文 N/A 2byte 2byte 3byte

    Python2 中默认的编码格式是 ASCII,因此需要指定字符编码才能支持中文。字符串默认也是 ASCII ,如果代码文件头声明了其它编码格式(如 GBK),那字符串就使用声明的编码格式,在内存中不会自动转成 Unicode。

    Python3 中默认的编码格式是 UTF-8。字符串的编码格式是 Unicode,即使代码文件头声明了其它编码格式,在内存中也会转换为 Unicode。

    Windows 系统中文版默认编码是 GBK,Linux 系统默认编码是 UTF-8。

    # Python2指明编码格式:
    # -*- coding:utf-8 -*-
    

    计算机系统通用的字符编码工作方式:
    在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要网络传输的时候,就转换为 UTF-8 编码。无论以什么编码在内存中显示字符,最终保存到硬盘上都是二进制(不同编码转成的二进制不同)。存储和读取的编码必须都要保持一致。

    ASCII 转二进制的过程
    把字符串拆分成单个字符,对照 ASCII 表把单个字符转成十进制,再把十进制转成二进制,每个字符最终转换成二进制后都是由 8 位的规则来组成的,不足 8 位的在二进制的左边补零从而成 8 位。

    ASCII转二进制
    ASCII码十进制二进制
    Python 80 121 116 104 111 11001010000 01111001 01110100 01101000 01101111 01101110

    可以使用 ord() 和 bin() 函数进行验证

    # 字符对应的十进制整数
    >>> ord('P')
    80
    >>> ord('y')
    121
    >>> ord('t')
    116
    >>> ord('h')
    104
    >>> ord('o')
    111
    >>> ord('n')
    110
    #十进制整数对应的二进制
    >>> bin(80)
    '0b1010000'
    >>> bin(121)
    '0b1111001'
    >>> bin(116)
    '0b1110100'
    >>> bin(104)
    '0b1101000'
    >>> bin(111)
    '0b1101111'
    >>> bin(110)
    '0b1101110'
    

  • 相关阅读:
    java1.8版本的HashMap源码剖析
    java并发包——阻塞队列BlockingQueue及源码分析
    java多线程(二)-线程的生命周期及线程间通信
    单例设计模式的回顾。。。。
    java多线程的(一)-之java线程的使用
    根据IO流源码深入理解装饰设计模式使用
    IO流回顾与总结第一篇之字节流与字符流的操作。。。。。
    java中的异常类型以及区别????
    设计模式之装饰设计案例
    集合源码(一)之hashMap、ArrayList
  • 原文地址:https://www.cnblogs.com/lipandeng/p/11151940.html
Copyright © 2020-2023  润新知