關於「爲什麼Unicode中文字符佔取2個字節,而 UTF-8卻佔3個字節」的網絡解釋修正

學到編碼時,有個疑問——好好的佔2字節的Unicode不用,卻要用佔3字節的UTF-8編碼。發明 UTF-8的初衷不就是爲了修正Unicode中任何字符至少佔用2個字節的弊端嗎?編碼

雖然UTF-8英文字符佔空間減小了(由Unicode中的16位動態縮減爲與ASCⅡ一致的8位),但你在中文字符這部分增爲3字節=24位,減小的空間一會兒又沒了。spa

查了一些博客文,發覺都是互抄的,錯誤低級到好笑。。。學點東西咋這難呢,實體媒體要防範盜版書,數字媒體還要防範「不走腦子的copy」code

幸虧,高大上的知乎有人手打文字答疑。我寫點本身的解釋。。。blog

Unicode符號範圍        |   UTF-8編碼方式

(十六進制)             | (二進制)       #Unicode部分爲16進制編碼, UTF-8編碼爲2進制

—————————————————————–————————————–

0000 0000-0000 007F   | 0xxxxxxx      #UTF-8規定,若1字符=1字節,首位須爲‘0’
0000 0080-0000 07FF   | 110xxxxx 10xxxxxx  #UTF-8規定,若1字符=2字節,高位字節前3位爲‘110’,低位前2位爲‘10’
0000 0800-0000 FFFF   | 1110xxxx 10xxxxxx 10xxxxxx  #UTF-8規定,若1字符=3字節,高位字節前3位爲‘110’,後面低位前2位一概爲‘10’。(佔4,5字節字符規則以此類推)
做者:於洋 連接:https://www.zhihu.com/question/23374078/answer/69732605 來源:知乎 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。


因爲utf-8規則自然佔用字節前幾位,若與Unicode一樣用2字節16位表示一箇中文字符,則utf-8除去規則佔用,只剩餘16-5=11位,沒法。utf-8

那麼看下面「1字符=3字節」 這段,除去規則佔用,還剩餘8x3-8=16位,剛好符合16位=1中文字符這一Unicode規則。博客

相關文章
相關標籤/搜索