轉 Unicode 和 UTF 8 的區別

2021-09-08 20:18:15 字數 943 閱讀 1457

簡單來說:

unicode 是「字符集」

utf-8 是「編碼規則」

其中: 字符集:為每乙個「字元」分配乙個唯一的 id(學名為碼位 / 碼點 / code point)

編碼規則:將「碼位」轉換為位元組序列的規則(編碼/解碼 可以理解為 加密/解密 的過程)

廣義的 unicode 是乙個標準,定義了乙個字符集以及一系列的編碼規則,即 unicode 字符集和 utf-8、utf-16、utf-32 等等編碼……

unicode 字符集為每乙個字元分配乙個碼位,例如「知」的碼位是 30693,記作 u+77e5(30693 的十六進製制為 0x77e5)。

utf-8 顧名思義,是一套以 8 位為乙個編碼單位的可變長編碼。會將乙個碼位編碼為 1 到 4 個位元組:

u+ 0000 ~ u+ 007f: 0******x

u+ 0080 ~ u+ 07ff: 110***xx 10******

u+ 0800 ~ u+ ffff: 1110***x 10****** 10******

u+10000 ~ u+1ffff: 11110*** 10****** 10****** 10******

根據上表中的編碼規則,之前的「知」字的碼位 u+77e5 屬於第三行的範圍:

7 7 e 5

0111 0111 1110 0101 二進位制的 77e5

--------------------------

0111 011111 100101 二進位制的 77e5

1110***x 10****** 10****** 模版(上表第三行)

11100111 10011111 10100101 代入模版

e 7 9 f a 5

這就是將 u+77e5 按照 utf-8 編碼為位元組序列 e79fa5 的過程。反之亦然。

unicode和utf8的關係

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

Unicode和utf 8的區別

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

utf 8和Unicode的區別

utf 8和unicode到底有什麼區別?是儲存方式不同?編碼方式不同?它們看起來似乎很相似,但是實際上他們並不是同乙個層次的概念 要想先講清楚他們的區別,首先應該講講unicode的來由。中國人不高興了,特麼我們漢字有幾萬個,常用的就有幾千個,沒有兩個位元組根本交不了貨。於是勤勞勇敢的中國人民就破...