utf 8和Unicode的區別

2022-08-16 03:51:14 字數 1191 閱讀 1583

utf-8和unicode到底有什麼區別?是儲存方式不同?編碼方式不同?它們看起來似乎很相似,但是實際上他們並不是同乙個層次的概念

要想先講清楚他們的區別,首先應該講講unicode的來由。

中國人不高興了,特麼我們漢字有幾萬個,常用的就有幾千個,沒有兩個位元組根本交不了貨。於是勤勞勇敢的中國人民就破天荒的用了兩個位元組來表示中文。整出一套gbk。為了現實我中華民族相容幷蓄,我們相容了ascii編碼。

於是天下就很亂了,歐洲人看不懂我們發過去的資訊,我們也看不懂他們的東西,美國人看不懂我的東西,不過我們能看懂他們的資訊。。。哈哈。

總之,天下大亂,群雄並起,百姓生靈塗........

這個時候,就有個國際組織站出來了,說,這麼著吧,我來擼一套編碼,把大家的編碼都歸納進來。於是unicode編碼就出現了。這套編碼表的編號從0一直算到了100多萬(三個位元組)。每乙個區間都對應著一種語言的編碼。目前幾乎收納了全世界大部分的字元。所有的字元都有唯一的編號,這就解決了解碼的衝突,於是天下大定!但是,unicode把大家都歸納進來,卻沒有為編碼的二進位制傳輸和二進位制解碼做出規定。只留下一句:大哥只能幫你到這裡了。

我知道你一定在想,要個毛的規定啊,每次讓計算機讀取三個位元組然後參照unicode表解碼就好了。想法是好的,但是如果類似於1號編碼這樣的小資料編號也要三個位元組的話,那麼也就是0x000001,這簡直就是浪費啊,明明乙個位元組就可以表示了,你非得整三個,所以你到底是幾個意思呢?

不管怎麼樣,大哥雖然走了,但是問題還得解決啊,於是,就出現了如下解決方案:uft-8,utf-16,utf-32這些編碼方案。utf-16是用兩個位元組來編碼所有的字元,utf-32則選擇用4個位元組來編碼。下面只講一下utf-8這種解決方案,因為它用的最多,用得最多是因為在當時它的方案最好,最節省資源。

utf-8為了節省資源,採用變長編碼,編碼長度從1個位元組到6個位元組不等

ok,關於unicode和utf-8的區別已經解釋完畢了。下面用乙個圖來鞏固一下那些區別

unicode與uft-8的結構關係.png

注:此文非原創,只是對於自己有幫助,記錄於此

Unicode和utf 8的區別

很久以前儲存的,別人寫的但是很明了 很久很久以前,有一群人,他們決定用8個可以開合的電晶體來組合成不同的狀態,以表示世界上的萬物。他們看到8個開關狀態是好的,於是他們把這稱為 位元組 再後來,他們又做了一些可以處理這些位元組的機器,機器開動了,可以用位元組來組合出很多狀態,狀態開始變來變去。他們看到...

轉 Unicode 和 UTF 8 的區別

簡單來說 unicode 是 字符集 utf 8 是 編碼規則 其中 字符集 為每乙個 字元 分配乙個唯一的 id 學名為碼位 碼點 code point 編碼規則 將 碼位 轉換為位元組序列的規則 編碼 解碼 可以理解為 加密 解密 的過程 廣義的 unicode 是乙個標準,定義了乙個字符集以及...

Unicode和UTF 8有和區別

關於字符集,之前一直就只知道寫 時成員間統一用utf 8,就不會出現問題,也沒有繼續深入 今天在網上搜了一些資料,總算弄清楚了,下面大致以簡明的方式總結一下 具體 unicode 字符集為每乙個字元分配乙個碼位,例如 知 的碼位是 30693,記作 u 77e5 30693 的十六進製制為 0x77...