Python 历史遗留问题

现在我们思考一个问题。

我们在电脑上敲字符,这个字符首先是存到内存里的对吧,内存里躺着的都是Unicode格式的二进制数对吧,现在如果我要把它存到硬盘,理论上来说就可以直接把Unicode格式的二进制直接丢到硬盘就可以了。

如果是这样的话,世界上就不会有乱码问题了。

但是,内存里的数据是一断电就马上丢失了,而硬盘的数据会是永久保存的。

这些硬盘里保存的有整个人类历史长河发展过程中,留下非常庞大数量的老文件,而这些文件里面有很多都是由GBK编码的,或者用ASCII码、Shift_JIS、Euc-kr等等。

对于这些老文件我们不能全部删除吧,如果全部删掉的话,那我们也就不会遇到乱码问题了。

因为所有的文件都是Unicode编码的,但是问题是我们做不到秦始皇那样所以我们经常会遇到的乱码问题就是历史发展过程中,残留了太多的各种编码的文件。

现在我们电脑内存里的编码方式,都换成Unicode了,所以我们现在在程序运行过程中,输入的任何人类字符都不会乱码。

但是硬盘上躺的那些老的文件我们是不是也需要让他们正常显示。

所以Unicode编码除了需要兼容玩过字符之外,还需要与原来每个国家的字符编码有对应关系,把新的Unicode的二进制数与来的编码的二进制数一一对应起来。

就相当于你买房要找个中介,Unicode就是那个中介。

我在电脑上输入字符,在内存里存的是Unicode的二进制数,然后当我要保存到硬盘的时候,就要指定保存成GBK格式,然后就会按照Unicode对应上GBK的二进制编码进行保存。

当我们要读取GBK格式的文件的时候,也会是按照各个步骤反过来,先看这个文件是以什么编码格式保存的,然后对应成Unicode编码的二进制数。再根据Unicode编码显示出原来的字符。

以前老的字符编码,都是可以转成Unicode编码的,但是不能通过Unicode进行相互转换,当然如果是纯英文的话就没问题。

未经允许不得转载:445IT之家 » Python 历史遗留问题

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏