学计算机的那个

不是我觉到、悟到,你给不了我,给了也拿不住;只有我觉到、悟到,才有可能做到,能做到的才是我的.

0%

编码

世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。

ASCII

ASCII码就是一种编码,字母A的编码是十六进制的0x41,字母B是0x42,ASCII编码最多只能有127个字符

UTF - 8

有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode,就像它的名字都表示的,这是一种所有符号的编码。

Unicode 是互联网统一的符号集,只规定了符号唯一的二进制代码值,却没有规定这个二进制代码应该如何存储。UTF-8是一种针对Unicode的可变长度字符编码,UTF-8用1到4个字节编码Unicode字符,在互联网上使用最广的一种 Unicode 的实现方式。

UTF-8 是 Unicode 的实现方式之一

Base64编码

Base64编码是对二进制数据进行编码,表示成文本格式,这样在很多文本协议(电子邮件协议)中就可以处理二进制数据

Base64编码可以把任意长度的二进制数据变为纯文本,且只包含AZ、az、0~9、+、/、=这些字符

原理是把3字节的二进制数据按6bit一组,用4个int整数表示,然后查表,把int整数用索引对应到字符,得到编码后的字符串。

举个例子:

3个byte数据分别是e4、b8、ad,按6bit分组得到39、0b、22和2d:

因为6位整数的范围总是063,所以,能用64个字符表示:
字符A
Z对应索引025,
字符a
z对应索引2651,
字符0
9对应索引52~61,
最后两个索引62、63分别用字符+和/表示

因为标准的Base64编码会出现+、/和=,所以不适合把Base64编码后的字符串放到URL中。一种针对URL的Base64编码可以在URL中使用的Base64编码,它仅仅是把+变成-,/变成_

Base64编码的缺点是传输效率会降低,因为它把原始数据的长度增加了1/3