由于直接用Unicode编码存到硬盘,会有一个IO增多的问题,于是聪明的人类有设计了一个版本叫UTF-8。
英文全称是Unicode Transformation Format。翻译过来就是Unicode的转换格式。
所以说UTF-8本质就是Unicode,只是它把Unicode转换了,把英文字符对应的二进制数转成了1个字节,1个字节就是8位。
把中文字符统一都用3个字节表示,当然原本Unicode是用2个字节表示中文,现在变成3个字节了。
不要只看片面的东西,说中文更加浪费空间了。因为UTF-8本身是针对Unicode进行整体上的精简。所以说UTF-8在整体上,一定是比Unicode更加精简的。
在Unicode里面,有的生僻字可能会用4个字节,甚至8个字节。
现在详细讲解编码解码的概念。
转成Unicode二进制数的这个过程我们称之为编码,Unicode转成UTF-8或者GBK以及其他老的编码方式的过程我哦么也称之为解码。
UTF-8或者其他编码方式转成Unicode的过程我们称之为解码,然后Unicode转成我们的字符的这个过程我们也称之为解码。
编码:字符--->编码--->unicode--->编码--->UTF-8\GNK
解码:字符<---解码<---unicode<---解码<---UTF-8\GNK
内存里是固定使用Unicode编码的,我们唯一可以改变的是,录入硬盘的时候采用Unicode跟哪种编码进行转换?到底是Unicode转成GBK,还是Euc-kr?
但是咱们应该转成的是UTF-8,因为UTF-8是兼容万国字符的,而且也比Unicode更精简。
那为什么我们不把内存里也直接换成UTF-8呢?还要Unicode干什么呢?这样不是内存里是最精简的,硬盘里也是最精简的吗?
但是要注意一个问题,Unicode不仅仅是兼容万国字符,它还充当了一个中介的功能,它与以前那些老的字符编码有对应关系。
所以咱们现在内存里仍然使用的是Unicode编码,这样能够使得从过去的诸侯并起的编码方式,过渡到现在最理想的UTF-8会更加的平滑。
所以从现在开始,对于专业人士来说,所有的新文件,再往硬盘存的时候就应该存UTF-8的格式。
这样当我们硬盘上的数据越来越多,等过五六十年的时候,硬盘上那些老的编码方式的文件彻底被淘汰了,全都是UTF-8格式的文件了。
到那个时候Unicode就可以彻底下岗了,内存里就可以直接使用UTF-8格式了。
于是计算机又回到了那个天下大同的局面了,我们也就再也不会遇到乱码问题了。
未经允许不得转载:445IT之家 » Python 天下大同