由于直接用Unicode編碼存到硬盤,會有一個IO增多的問題,于是聰明的人類有設計了一個版本叫UTF-8。
英文全稱是Unicode Transformation Format。翻譯過來就是Unicode的轉換格式。
所以說UTF-8本質就是Unicode,只是它把Unicode轉換了,把英文字符對應的二進制數轉成了1個字節(jié),1個字節(jié)就是8位。
把中文字符統(tǒng)一都用3個字節(jié)表示,當然原本Unicode是用2個字節(jié)表示中文,現在變成3個字節(jié)了。
不要只看片面的東西,說中文更加浪費空間了。因為UTF-8本身是針對Unicode進行整體上的精簡。所以說UTF-8在整體上,一定是比Unicode更加精簡的。
在Unicode里面,有的生僻字可能會用4個字節(jié),甚至8個字節(jié)。
現在詳細講解編碼解碼的概念。
轉成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會更加的平滑。
所以從現在開始,對于專業(yè)人士來說,所有的新文件,再往硬盤存的時候就應該存UTF-8的格式。
這樣當我們硬盤上的數據越來越多,等過五六十年的時候,硬盤上那些老的編碼方式的文件徹底被淘汰了,全都是UTF-8格式的文件了。
到那個時候Unicode就可以徹底下崗了,內存里就可以直接使用UTF-8格式了。
于是計算機又回到了那個天下大同的局面了,我們也就再也不會遇到亂碼問題了。
未經允許不得轉載:445IT之家 » Python 天下大同