1-1-02.计算机基础-编码

3.编码

编码,文字和二进制之间的一个对照表。

计算机中所有的数据本质上都是以0和1的组合来存储。【记住】

在计算机中会将中文内存转换成 01010101010... ,最终存储到硬盘上。

在计算机中有这么一个编码的概念(密码本)。

    武     ->      01111111 00011010 010110110
    沛     ->      01001111 10010000 001110100
    齐     ->      11111111 00000000 010101010

在计算机中有很多种编码。

每种编码都有自己的一套密码本,都维护这自己的一套规则,如:
    utf-8编码:
        武     ->      01111111 00011010 010110110
        沛     ->      01001111 10010000 001110100
        齐     ->      11111111 00000000 010101010
    gbk编码:
        武     ->      11111111 00000010
        沛     ->      01001111 01111111
        齐     ->      00110011 10101010
所以,使用的不同的编码保存文件时,硬盘的文件中存储的0/1也是不同的。

注意事项:以某个编码的形式进行保存文件,以后就要以这种编码去打开这个文件。否则就会出现乱码。

UTF-8编码去保存武沛齐:01111111 00011010 010110110 01001111 10010000 001110100 11111111 00000000 010101010
GBK编码形式去打开:乱码

3.1 ascii编码

ascii规定使用1个字节来表示字母与二进制的对应关系。

00000000
00000001    w
00000010    B
00000011    a
...
11111111

2**8 = 256   #2的八次方

3.2 gb-2312编码

gb-2312编码,由国家信息标准委员会制作(1980年)。

gbk编码,对gb2312进行扩展,包含了中日韩等文字(1995年)。

在与二进制做对应关系时,由如下逻辑:

  • 单字节表示,用一个字节表示对应关系。2**8 = 256
  • 双字节表示,用两个字节表示对应关系。2**16 = 65536中可能性。

3.3 unicode

unicode也被称为万国码,为全球的每个文字都分配了一个码位(二进制表示)

  • ucs2 :用固定的2个字节去表示一个文字。
    00000000 00000000 悟
    2**16 = 65535

  • ucs4 :用固定的4个字节去表示一个文字。
    00000000 00000000 00000000 00000000 无
    2**32 = 4294967296

unicode的应用:在文件存储和网络传输时,不会直接使用unicode,而在内存中会unicode。

3.4 utf-8编码

包含所有文字和二进制的对应关系,全球应用最为广泛的一种编码(站在巨人的肩膀上功成名就)。

本质上:utf-8是对unicode的压缩,用尽量少的二进制去与文字进行对应。

  unicode码位范围            utf-8      
   0000 ~ 007F              用1个字节表示
   0080 ~ 07FF              用2个字节表示
   0800 ~ FFFF              用3个字节表示
  10000 ~ 10FFFF            用4个字节表示


3.5 Python相关的编码

字符串(str)     "alex媳妇叫铁锤"             unicode处理               一般在内存
字节(byte)      b"alexfdsfdsdfskdfsd"      utf-8编码 or gbk编码       一般用于文件或网络处理
v1 = "武"

v2 = "武".encode("utf-8")
v2 = "武".encode("gbk")

将一个字符串写入到一个文件中。

name = "嫂子热的满身大汗"
data = name.encode("utf-8")

# 打开一个文件
file_object = open("log.txt",mode="wb")
# 在文件中写内容
file_object.write(data)
# 关闭文件
file_object.close()
posted @ 2022-10-18 21:51  布丁家的苏苏  Views(39)  Comments(0)    收藏  举报