天天看點

家人們,10分鐘大家了解Unicode,ASCII,UTF-8,代碼點,編碼

作者:嵌入式xff

接着上一篇文章的話題繼續,記住ASCII隻有一種編碼政策,擷取ASCII值将其轉為一位元組(8比特)的二進制數,Unicode實際有幾種編碼政策不止一種,因為其各有利弊。

來看一種名為UTF-32,UTF-32将每個代碼點值轉為四位元組的二進制數即32位,是以叫UTF-32。和ASCII類似,将ASCII值映射到一位元組,隻是占用了四倍空間,當用UTF-32編碼,值就像這樣,

家人們,10分鐘大家了解Unicode,ASCII,UTF-8,代碼點,編碼

我們為了簡潔,我用等價的十六進制代替二進制來進行表示。這種編碼的優勢,每個代碼點有相同尺寸的位元組,不管它的值是什麼,例如第一個代碼點總是索引為0的位元組,第二個在4,第三個在8,以此類推。它的缺點是有些浪費。

家人們,10分鐘大家了解Unicode,ASCII,UTF-8,代碼點,編碼

看字元串‘Hello FishC',當編碼成ASCII和UTF-32,

家人們,10分鐘大家了解Unicode,ASCII,UTF-8,代碼點,編碼

UTF-32比之前多占了4倍空間,是個很大的缺點。問題在于常見的小值和不常見的大值都占用了四位元組,旨在解決該問題的方案,名為UTF-8,UTF-8将每個代碼點映射到一到四位元組之間,值較小的代碼點映射到一位元組,可以節約很多的空間,較大值占2-4位元組,更棒的是簡單的西文字母。像d和z有相同的UTF-8和ASCII編碼,因為他們的Unicode代碼點和ASCII值相同,非常小的代碼點值的UTF-8編碼,像ASCII的簡單二進制表示,向後相容性也很不錯,意味着老的ASCII程式可以讀取簡單的UTF-8字元,甚至不需要知道它是UTF-8,UTF-8缺點是代碼點尺寸和位元組不等,這樣通過索引定位就很難,會對性能造成一些影響。關于這部分的内容需要了解的知識很多,如果大家想要深入學習,小編将資料分享給大家,感興趣可以了解一下。加微信領取資料。

家人們,10分鐘大家了解Unicode,ASCII,UTF-8,代碼點,編碼