背景
计算机只认识0和1(计算机中所有数据都是二进制进行存放的),人类只能认文字,因此就出现了文字到0、1之间的映射,其实就是指定了映射的规则。
- 编码:从字符(文字、字母、标点等)到0、1的映射是编码;
- 解码:从0、1到字符的映射叫解码;
- 字节流:计算机实际存储的字符对应的编号,即在计算机存储上都是字节流(二进制)形式;
名词预览
- Binary data:0和1的集合;
计算机只认识0和1—计算机中所有数据都是二进制进行存储和表示的;在二进制里的每一位(0/1)都叫Bit(位); - Character Sets:定义数字和字符之间的对应关系 — 常见的是Unicode和ASCII;
eg:在Unicode编码中76就对应了L; - Character Encoding:定义了数字如何用二进制表示 — 用多少bit位表示这些数字;
- UTF-8:字符用字节(byte)来编码 — 8个0/1来表示二进制的任何字符;
- Stream:在Node中就是即将在空间里被移动的一系列数据 — 将一个大的数据切割成一个个小块(chunk)来发送;
- Buffer:数据等待区域 — 在计算机RAM中的一个物理地址,里面的数据是在数据流期间暂时收集起来的,被发送给进程处理;
数据流就是从一个点到另一个点移动的数据,一定时间里系统处理的数据是有上下限的:
- 供过于求:数据到达速度 > 进程处理速度,数据需要存放在Buffer中等待进程按序处理;
- 供不足求:数据到达速度 < 进程处理速度,数据需要在Buffer中凑够了一定的量才能被送到处理进程中;
乱码
- 文本字符编码过程和字节流解码过程使用了不同的规则;
- 非文本文件—没有经过编码的过程,就不需要解码了,解码会引起乱码;
注:同样的文本字符,经过不同的编码,在存储结构上是不一样的,但是代表的字符是一样的,不同编码的真正区别在于存储结构,因此相同的存储结构,经过不同的解码,对应的文本字符并不一样,但在内存上结构并没有改变,即只是显示是乱码而已,在计算机里还是正确的。
[每篇一愿]:希望掉发不要太严重了,愿上帝能给一个还未出嫁的程序猿一个机会,毕竟不想遁入空门,阿门(上帝os:脱不脱发又不归我管,防脱发用霸王啊,duang)
[作者BB]:施主有耐心看完一个毫无逻辑的前端小白的文章,为你笔芯;作为出自于一个佛系girl的文章,施主能不能读懂就全凭缘分了,愿你看至此能嘴角上扬,皮这一下很开心。
网友评论