• python第一篇:Python 字符串编


    Python字符串编码

    字符串编码的前世今生

    1. 一个字节由8个bit组成,所以1个字节能表示的最大数为255;

    2. 计算机是美国人发明的,所以一个字节可以表示所有的字符了,所以ASCII就成为美国人的标准编码;

    3.但是ASCII编码处理汉字是明显不够的,中文不止255个汉字,所以中国制定GB2312编码,用两个字节表示一个汉字,GB2312还把ASCII包含进去了,同理,日文。韩文等等上百个国家为了解决问题都发展了一套字节的编码,标准就越来越多,如果出现多种语言混合现实就一定会乱码;

    4.这时候出现了Unicode编码,将所有的标准统一到了一套编码里面;

    5.那ASCII编码和Unicode编码之间是如何进行转换的?下面是具体的转换方法:

      5.1 字母A用ASCII编码表示的十进制是65,二进制即为0100 0001

      5.2 汉字“中”已经超出了ASCII编码的范围,用Unicode编码十进制是20013 二进制是0100 1110 0010 1101

      5.3 A字母用Unicode编码时只需要在前面补上0  即为0000 0000 0100 0001

    6.乱码问题解决了,但是同时又出现了一个新的问题,如果全部是英文字母的话,Unicode编码比ASCII编码多消耗一倍的内存,同时网络传输的时候也多消耗一倍的带宽;

    7.所以这个时候出现了长度可变化的utf-8的编码。

    字符与字节

    1byte = 8bit
    1KB = 1024 bytes
    1MB = 1024KB
    1GB = 1024MB
    1TB = 1024GB

    ASCII编码: 一个英文字母占据一个字节的空间,一个中文字母占据两个字节的空间;

    utf-8编码: 一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占据三个字节,英文标点占据一个字节;

    Unicode编码: 一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占据两个字节,英文标点占据两个字节。

    Unicode编码为GB2312编码  utf-8编码 ASCII等编码的一个父级编码,那这些子编码之间子在需要相互转换的时候就需要借助父级编码Unicode。子编码是可以直接转换为父级编码,然后父级编码转换为另一种类型的子编码。

    Python2和Python3字符编码存在的问题

    获取默认编码格式:

    >>> import sys
    >>> sys.getdefaultencoding()

    我们发现在python2中默认的编码格式是 'ascii' 编码,在python3中默认的编码格式为utf-8

    第一步:在终端输入python进入python2的开发环境

    第二步:s = "中国"   # 获取s的值拿到  'xe4xb8xadxe5x9bxbd'  说明此时的ASCII编码无法识别汉字

    Python2和Python3字符编码问题的解决方案

    import sys
    defaultencoding = 'utf-8'
    if sys.getdefaultencoding() != defaultencoding:
        reload(sys)
        sys.setdefaultencoding(defaultencoding)

  • 相关阅读:
    php程序去除文件 bom头
    类继承接口后,实现接口的方法
    virtual和abstract的使用场景分别是什么?待更新。
    get请求和post请求的总结
    ES6新语法,持续更新
    display:flex中的不懂的问题,待处理
    css相邻兄弟选择器(+),伪类(:hover),伪元素(::after)
    HTML中的input的type类型
    命令行打开程序的集合
    sqlserver 常用的语句
  • 原文地址:https://www.cnblogs.com/leijing0607/p/6386615.html
Copyright © 2020-2023  润新知