zoukankan      html  css  js  c++  java
  • 编码的进阶

    编码的进阶

    • ASCII码:包含英文字母,数字,特殊字符与01010101对应关系。

      a 01000001 一个字符一个字节表示。

    • GBK:只包含本国文字(以及英文字母,数字,特殊字符)与0101010对应关系。

      a 01000001 ascii码中的字符:一个字符一个字节表示。

      中 01001001 01000010 中文:一个字符两个字节表示。

    • Unicode包含全世界所有的文字与二进制0101001的对应关系。

      a 01000001 01000010 01000011 00000001

      b 01000001 01000010 01100011 00000001

      中 01001001 01000010 01100011 00000001

    • UTF-8:包含全世界所有的文字与二进制0101001的对应关系(最少用8位一个字节表示一个字符)。

      a 01000001 ascii码中的字符:一个字符一个字节表示。

      To 01000001 01000010 (欧洲文字:葡萄牙,西班牙等)一个字符两个字节表示。

      中 01001001 01000010 01100011 亚洲文字;一个字符三个字节表示。

    1. 不同的密码本之间能否互相识别?不能。

    2. 数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者存储到硬盘中,必须是以非Unicode编码(utf-8,gbk等等)。

    • 英文:

      str: 'hello '

      ​ 内存中的编码方式: Unicode

      ​ 表现形式: 'hello'

      bytes :

      ​ 内存中的编码方式: 非Unicode

      ​ 表现形式:b'hello'

    中文:

    ​ str:

    ​ 内存中的编码方式: Unicode

    ​ 表现形式:'中国'

    ​ bytes :

    ​ 内存中的编码方式: 非Unicode # Utf-8

    ​ 表现形式:b'xe4xb8xadxe5x9bxbd'

    # str ---> bytes
    # s1 = '中国'
    # b1 = s1.encode('utf-8')  # 编码
    # print(b1,type(b1))  # b'xe4xb8xadxe5x9bxbd'
    # # b1 = s1.encode('gbk')  # 编码  # b'xd6xd0xb9xfa' <class 'bytes'>
    # # bytes---->str
    # b1 = b'xe4xb8xadxe5x9bxbd'
    # s2 = b1.decode('utf-8')  # 解码
    # print(s2)
    
    # gbk ---> utf-8
    b1 = b'xd6xd0xb9xfa'
    s = b1.decode('gbk')
    # print(s)
    b2 = s.encode('utf-8')
    print(b2)  # b'xe4xb8xadxe5x9bxbd'
    
    
  • 相关阅读:
    Linux线程同步方法
    Linux进程间通信:信号
    孤儿进程僵尸进程及其回收
    Linux守护进程
    Linux系统编程常见函数 (进程/线程)
    Linux系统编程常用函数 (文件/目录)
    C++实现贪吃蛇小游戏
    C++实现简易Vector类
    C++实现简易版字符串类
    《图解HTTP》读书笔记
  • 原文地址:https://www.cnblogs.com/wyh0717/p/12911154.html
Copyright © 2011-2022 走看看