不同编辑器如何显示文字猜想<35>

编辑器,究竟是如何分割一个文件内容和显示他们呢?,Win,Unix下分别是如何显示的?
假设abcd,他们在内存中不过是4个字节的存储空间,那么文本编辑器(txt,vim等)是如何解析呢,按照每个字节一个字符,还是2个字节一个字符呢?

1   我的理解是:
<1>. 一个编辑软件,必须首先找到一种编码格式,比如说根据系统的设置,比如说linux中对语言的设置等,找到一个可能的编码,或者根据软件的配置,找到一种合适的编码,比如vim,可以自己set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,设置各种编码,当我们用vim打开一种文件时候,他会做各种尝试,比如先用ascii,再用utf-8,尝试着去解析文件,看是否所有文件内容都可以按照该编码完全解析,如果可以,就这样显示, 如果不可以就换外一种编码尝试; 具体的读取方法可能是一次读取1,2,3,4个字节来尝试,或许这就是打开一个较大的文件比较慢的原因;
<2>. 对于win下的文本编辑器,当我们打开一个文件时,他会默认用自己设定的编码来解析,如果出错了,我们可以手动切换编码,再用该编码来解析整个文件;
<3>. 所有文件在磁盘上的存储都是,0,1,0,1这样来存储的,当我们要解析的时候必须指定一种编码再解析, 对于二进制文件,基本上会显示乱码,但也不一一定,除非碰巧可以用一种编码解析;
<4>. 二进制和非二进制的区别就是,非二进制文件是有格式的无长度,二进制只有长度无格式,
<5>. 反过来,当我们向文本编辑器里面写入文字的时候,我们写入的是一种编码对应的值,例如utf-8(或者ascii,两者127以内兼容)下,我们写入1,其实是我们写入了Ascii的1,意思就是我们写入的是字符1,那么我们写入的真正的被计算机运算处理的是: 字符1对应的值,是0x31;

2.  当然不单单是文本编辑器了,我们整个系统都需要一套编码,例如在xshell中也需要设置自己的编码;

猜你喜欢

转载自ZacMa.iteye.com/blog/2157402
今日推荐