计算机 基础-字符编码

我心飞翔 分类:javascript

1. 二进制数据是什么?

  • 字母 L 对应的 是数字 76
  • "L".charCodeAt(0) === 76
  • 然后再把76 转化 成 二进制 01001100
  • 字符集 : 指明 字符集里面的数字 代表的 字符关系
  • unicode 或 ASCII
  • UTF-8 是以 8位(bit)
  • 所以 L 对应的 76 就对应 01001100 (8位)
  • 如果是 12 对应的是 00001100
  • 字节是二进制数据的单位。一个字节通常8位长

字节换算

  • 常见的存储单位主要有 bit(位)、B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)。它们之间主要有如下换算关系:
  • 1B=8bit
  • 1KB=1024B
  • 1MB=1024KB
  • 1GB=1024MB
  • 其中 B 是 Byte 的缩写。
  • bit代表的是最小单位,可以理解为一个小格 只能存储1或者0
  • Byte = 8个 bit
  • 现实生活中商家卖的 1GB 硬盘 是以 1000为单位,实际系统显示是以 1024计算单位

字符集

ASCII码:

  • 国际标准,通过数字代表只有128个字符:基本的英语 + 符合
  • 所以使用 1 字节,就能表达所有的字符信息 如 00001100 ,最多可以表达 256个字符

GB2312 GBK GB18030

  • 中文字符集 最多的GB18030收集了 70000
  • 所以使用 2 字节 代表一个汉子,

UTF

国际标准 综合通用字符集,什么语言都有
UTF-8就是以8位为单元,一个字节。 字节流(二进制)
UCS-2编码(16进制)
UTF-16以16位为单元,2个字节。

为什么是 UTF-8

UTF-8编码规则:

             1.可变长编码,由第一个字节决定该字符编码长度

             2.大于127的码点都用多字节来编码,多字节包含开头字节和后续字节开头字节以若干个1开头(长度为几就有几个1,因此只要读完开头字节就可以知道本字符共有多少个字节),后接1个0.后续字节都以10开头。

             3.从右到做,后续字节每个字节占用原码点6个位,剩余的放在开头字节。

             4.开头字节和后续字节不共享任何数据,因此utf8是自同步的。举例来说我们看到一个字节以110…开头时,我们就知道这是一个2字节的字符的开头字节。
 

回复

我来回复
  • 暂无回复内容