作者:拉丁吳
UTF-8和unicode到底有什麼區别?是存儲方式不同?編碼方式不同?它們看起來似乎很相似,但是實際上他們并不是同一個層次的概念
要想先講清楚他們的區别,首相應該講講Unicode的來由。
于是天下就很亂了,歐洲人看不懂我們發過去的信息,我們也看不懂他們的東西,美國人看不懂我的東西,不過我們能看懂他們的信息。哈哈。
總之,天下大亂,群雄并起,百姓生靈塗........
這個時候,就有個國際組織站出來了,說,這麼着吧,我來撸一套編碼,把大家的編碼都歸納進來。于是unicode編碼就出現了。這套編碼表的編号從0一直算到了100多萬(三個字節)。每一個區間都對應着一種語言的編碼。目前幾乎收納了全世界大部分的字符。所有的字符都有唯一的編号,這就解決了解碼的沖突,于是天下大定!但是,unicode把大家都歸納進來,卻沒有為編碼的二進制傳輸和二進制解碼做出規定。隻留下一句:大哥隻能幫你到這裡了。
我知道你一定在想,要個毛的規定啊,每次讓計算機讀取三個字節然後參照Unicode表解碼就好了。想法是好的,但是如果如果類似與1号編碼這樣的小數據編号也要三個字節的話,那麼也就是0x000001,這簡直就是浪費啊,明明一個字節就可以表示了,你非得整三個,幾個意思啊?不管怎麼樣,大哥雖然走了,但是問題還得解決啊,于是,就出現了如下解決方案:uft-8,utf-16,utf-32這些編碼方案。utf-16是用兩個字節來編碼所有的字符,utf-32則選擇用4個字節來編碼。下面隻講一下utf-8這種解決方案,因為它用的最多,用得最多是因為在當時它的方案最好,最節省資源。
utf-8.png
- 我知道你想說,明明看起來utf-16更加節省資源,節省空間,正常人都看得出來。但實際上,當時,互聯網上絕大部分存在的資源都是英文的,英文在utf-16中也是2個字節,而在utf-8中則是1個字節。在當時,顯然是utf-8更加節省資源。現在我們在中文世界裡來比較他們,則是utf-16更加節省資源。
OK,關于unicode和utf-8的區别已經解釋完畢了。下面用一個圖來鞏固一下那些區别
Unicode與uft-8的結構關系.png
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!