• 字符编码


    一:字符编码

      1、字符编码

    • 什么是字符编码:将人能识别的字符转换为计算机能识别的01二进制的过程就是字符编码,转换的规则就是字符编码表

    • 常用的编码表:ASCII、GBK、Unicode、UTF-8

        了解:编码表的发展史

        1. ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系
         思考:如何将128个字符用01完全标签
         二进制:11111111 => 255 => 1bytes(1字节) => 8个二进制位

        2.中国:研究汉字与计算机01标识符的对应关系:gb2312 => GBK(***) => GB18030
         日本:Shift_JIS
         韩国:Euc-kr

        3. 制造一个可以完成万国字符与计算机01标识符的对应关系的编码表
         编码表:unicode表
         py2:ascii,没有按万国编码,原因py2要诞生先有万国编码
         py3: utf-8, 采用万国编码来解释文本内容

        

        # 思考:unicode与utf-8什么关系
        unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间较多,读取效率极高
        utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低
        总结:内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据
        #“abc你好”

        unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据。变长优点:(大量数据都是以英文存在,所以utf-8空间更小)传输速度更快

    • 编码操作:编码encode()、解码decode()

        s = '123呵呵'

        n_b = bytes(s, encoding='utf-8')
        print(n_b)

        b = b'123xe5x91xb5xe5x91xb5'
        n_s = str(b, encoding='GBK')
        print(n_s)

        在清楚原格式是字符串还是二进制时:

        # 将u字符串编码成b字符串

        print(u'你好'.encode('utf-8'))
        # 将b字符串解码成u字符串
        print(b'xe4xbdxa0xe5xa5xbd'.decode('utf-8'))

       2、字节与字符

    • 三种字符串:

      u''  :文本字符串,

      r''  :原义字符串,不对字符串内存做任何操作(eg: 的转化):s3 = r'abc你好 不好'

      b''  :二进制字符串,是用来数据传输的,是字符的二进制体现(如视频资源可以转化为二进制字符串,不翻转为视频资源,则就是普通字符串),它以字节为最小存储单位存放数据。注意:不是所有的数据编码为二进制字符串都是采用UTF-8编码表的,只有文本内容是,像视频、音频、图片等都有特定的编码方式(他们在编码之后,如果没有解码成本来的格式,就只是普通的二进制字符串)

    • # 字符与ASCII之间转化
      res = ord('A')
      print(res)
      res = chr(65)
      print(res)
      # ascii:DBCS双字节存储可以存放中文等一些文字与字符,可以完成字符与整数(ascii表中整数)的转化
      print(ord('⑩'), chr(9323))

  • 相关阅读:
    nginx反向代理下没有获取到正确的clientIP问题发散
    TPL概要
    OAuth2:Authorization Flows
    ArrayList部分源码解析
    二分法之通用模板
    Leetcodet题目解析-1 c++版
    git初始用+将git项目上传到github
    参加ACM省赛有感
    杭电acm 1274展开字符串
    杭电acm 1263水果
  • 原文地址:https://www.cnblogs.com/maoruqiang/p/10627250.html
Copyright © 2020-2023  润新知