day02-03 字符编码

文本编辑器打开原理

打开编辑器后操作系统后台启动一个进程,所编辑的文字存放在内存。若期间断电,则数据丢失。若做了保存,则将编辑文字从内存刷到硬盘上。

 

计算机只认二进制,为什么人通过编辑器编辑文字,计算机能够识别呢?

 当打开编辑器后编辑文字,文字通过字符编码翻译成了计算机可识别的二进制存放于内存。反之人阅读文字,是将内存中的二进制流通过字符编码翻译成人可识别的文字。

假若此二进制流用其他字符编码翻译,这是乱码的由来。

 

字符编码发展史

 早先美国发明了ASCLL编码,计算机可以将英文翻译成二进制流。但中文,日文等其他文字认不了,于是各个国家先后出GBK编码,Shift_JIS编码等。于是乎全世界多出了

 太多字符编码。

 为了统一起来,出现了unicode编码。常见一个字符2字节,生僻字4字节。

 新的问题出现了,unicode编码全篇英文占用过多空间且网络传输数据量大,于是可变长的uft-8编码出现。于是英文1个字节,汉字3字节,生僻字6字节,大幅优化了。

 

字符编码在内存中以及在硬盘上的表现形式

当前内存中编码固定是unicode,只有硬盘的上字符编码可以更改。硬盘一般不用unicode编码,因为太吃空间,浪费IO,降低程序效率。所以硬盘一般为字符编码utf-8(用1Bytes存英文,3Bytes存中文)。内存中用unicode可以兼容万国软件,因为unicode有针对各国软件字符编码的各种映射关系。现在常见情况下硬盘上的字符读取进内存时,需要将utf-8转成unicode。以下为对应硬盘--字符集--内存关系。

unicode----->encode-------->utf-8

utf-8-------->decode---------->unicode

 

posted @ 2018-12-03 22:24  鱼结冰  阅读(98)  评论(0编辑  收藏  举报