base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。base64把一串二进制转换成另一种二进制串,以至于可以打印成英文、数字字符还有+、/.
4.base64 编码和解码
在 JavaScript 中,有两个函数被分别用来处理解码和编码 base64 字符串:
btoa():从字符串创建一个 base64 编码的 ASCII 字符串,其中字符串中的每个字符都被视为一个二进制数据字节。
atob():该函数能够解码通过 base64 编码的字符串数据。
unicode
Unicode又称为统一码、万国码、单一码,是国际组织制定的旨在容纳全球所有字符的编码方案,包括字符集、编码方案等,它为每种语言中的每个字符设定了统一且唯一的二进制编码,以满足跨语言、跨平台的要求。
Unicode 字符集
Unicode 为每个字符提供一个唯一数字(码点 code point),记为“U+xxxx”,其中xxxx是码位转换成16进制后的结果。
字符->码位的集合即 Unicode 字符集,也称作通用字符集(英语:Universal Character Set, UCS)。可在这里查询字符对应的码位。
Unicode 编码
Unicode 字符集规定了字符对应的唯一码点,但在实际的传输、存储过程中,为了兼顾各系统平台的差异、节省空间,需要对字符集进行编码——将对应的码点转换成另一种格式,即Unicode转换格式(Unicode Transformation Format,简称 UTF)。
Unicode 编码规则决定了码点如何在文件中显示,我们熟知的UTF-8 UTF-16就是编码规则的不同版本。
utf-8编码
UTF-8就是在互联网上使用最广的一种unicode的实现方式。UTF-8 是一种针对 Unicode 的可变长度字符编码,根据码点的大小,将其编码为 1 到 4 个字节。
简单来说,Unicode 是【字符集】,UTF-8 是字符集的一种【编码规则】。但广义来讲,它们是包含关系,如下图:
+-----------------------------+
| Unicode |
| +-----------------------+ |
| | 通用字符集(UCS) | |
| +-----------------------+ |
| +------------------------+ |
| | UCS转换格式(UTF) | |
| | +-------------------+ | |
| | | UTF-8, UTF-16 ... | | |
| | +-------------------+ | |
| +------------------------+ |
| |
+-----------------------------+