在开发过程中经常会遇到各种各样的编码,常见的有 UTF-8、Unicode、Base64 等,但前端世界远不止这三种编码,本文就来介绍前端常见的编码以及其使用方式。

ASCII

我们知道,计算机只能理解二进制,二进制语言是面向机器的语言,直接来自计算机的指令系统,由 0 和 1 组成。它使用整数来编码数字(0-9)、大写字母(A-Z)、小写字母(A-Z)以及分号(;)、感叹号(!)等。例如,97 用于表示 “a”,33 用于表示 “!”,这样就可以方便地存储在内存中。

互联网的早期只有英文字母,所以不需要担心任何其他字符,ASCII 就可以适用于这种情况的字符编码,例如 bits 对应的二进制如下:

01100010 01101001 01110100 01110011
   b        i        t        s

ASCII  全称为 American Standard Code for Information Interchange,即 “美国信息交换标准代码”,是基于拉丁字母的一套电脑编码系统。ASCII 至今为止共定义了 128 个字符:

ASCII 可以分为两类:

可以看到,ASCII 码实际上是一种映射,是从二进制字符到字母数字字符的映射。所以当计算机收到以下二进制文件时:

01001000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100

使用 ASCII 码进行映射,上面的二进制编码可以翻译成 “Hello world”。

“K” 在 ASCII 中是 75,可以将它转化为二进制,将 75 除以 2,然后继续,直到得到 0。如果除法不准确,则加 1 作为余数:

75 / 2 = 37 + 1
37 / 2 = 18 + 1
18 / 2 =  9 + 0
9 / 2 =   4 + 1
4 / 2 =   2 + 0
2 / 2 =   1 + 0
1 / 2 =   0 + 1

现在,提取 “余数” 并以相反的顺序放入它们:

1101001 => 1001011

因此,在 ASCII 中,“K” 在二进制中被编码为 1001011。