在汗青的长河里,产生了媛媛不行我们前面提到的那些编码体例,还有良多。

关于我们中国来说,在GBK之前还有GB2312,它是对ASCII码表的中文扩展,其时咱们还没那么富有,三个字节对我们来说太豪侈了,所以GB2312只是用两个字节,给常用的汉字停止了编码。

紧接着台湾的同胞一看,那明显是不让我们写繁体字了,于是他们也本身弄了一个繁体字编码,叫大五码(Big-5)。

然后在GBK之后,因为少数民族也需要用电脑了,于是又扩展成了GB18030,还有其时良多没有流行起来的编码体例,我就纷歧一赘述了。

如今只是我们国度都有那么多种编码尺度,更不消说其他国度了。

那就是我们经常碰到乱码问题的原因。

因为你翻开的体例不合错误,你用什么体例保留的文件,翻开的时候,就要按对应的编码来反解成Unicode才会一般显示,否则就会是一团乱码。

如今内存里固定都是Unicode,我们是没法子选择的,但是我们往硬盘里存数据的时候,是能够选择存GBK或者其他编码的。

但是若是我们如今存文件,仍是指定GBK或者其他老的编码体例来存的话,那就是一种图步,我们不该该那么做,理论上来说,我们应该间接把Unicode格局的二进造数据存到硬盘。

为什么说是理论上呢?

因为Unicode简单粗暴,都是用两个字节来暗示一个字符,个别生僻的字符会用更多,若是我那个文件里就是包罗了各个国度的字符,那如许就没问题。

但是若是我那个文件99%都是英文的话,那个Unicode会有什么问题呢?是不是会多占一倍的空间啊!原来我八位就足够了,你要给我用16位。

但是那个浪费空间的问题不是致命的,如今的存储越来越廉价了,实正致命的是IO问题。

我们如今来想,到底是读写100兆的文件IO次数多,仍是读写50兆的文件IO次数多呢?

所以实正影响那个问题是IO增加的问题。

那个IO问题我们之前最起头 的时候也提过,后面我会专门开两篇温江讲硬盘的IO操做,那里就不多介绍了。

所以本着那个原则,我们应该将Unicode,在原有的根底长进行精简,那时候有同窗就会问,为什么不克不及一起头设想Unicode的时候就设想的精简一点呢?

那就反过来问,当初设想计算机的时候,就不消ASCII码表,不消GBK,而是间接用最完美的字符编码表,不就好了吗?

汗青是一点点开展的,科技也是一点点的开展的,不会存在一会儿的大发作,所以不要用如今的目光去判断汗青开展的问题。

只能发现问题,然后处理问题。