Unicode 和 UTF 8 的關係和區別

2022-08-19 21:30:15 字數 927 閱讀 1347

說到編碼,得先從ascii編碼講起。ascii編碼是由美國人發明,美國的字元不超過255個,所以ascii編碼使用了8bit 即乙個位元組來儲存字元。由於漢字的數量遠超255個,所以中國自己發明了乙個gb2312編碼來表示漢字,一般的漢字使用2個位元組,對於一些生僻的漢字則使用更多的位元組來表示,當然,gb2313編碼是可以相容ascii碼的。

然後,日本,南韓等等國家也自己發明了一套編碼方法,這時候又出現了乙個新的問題。如果一篇文章裡面,即有中文,又有日文的話,無論使用中文的編碼方法還是使用日文的編碼方法都會出現亂碼。隨後,unicode編碼便應運而生。unicode編碼對文字的編碼進行了統一,當然,unicode只是一種編碼規範,它有多個版本,常用的unicode編碼使用了16位來儲存字元,16位的儲存空間足以容納世界上所有書面字元(對於漢字來說,一共有6萬多個,只能包含其中的一些常用漢字,所以unicode編碼對於漢字的相容性並不是特別好)。unicode編碼相容了ascii碼,ascii碼轉unicode編碼時,保持後8位不變,前8位只需要用0去補全即可。

使用了unicode編碼後,又有新的問題出現。因為unicode編碼是用兩個位元組來儲存字元,如果一篇文章中,大部分都是英文,使用unicode編碼就會造成空間的浪費,對英文部分使用ascii碼只需要乙個位元組就可以了。這時候,utf-8解決了這個問題。utf-8是一種可變長的字元編碼,當儲存英文時只使用乙個位元組,節省了一半的空間,而儲存中文字元時,長度還是不變。utf-8雖然壓縮了儲存空間,但是如果在記憶體中儲存,使用utf-8卻由於它的長度不固定,帶來了很大的不便,使得在記憶體處理字元變得複雜。應對這個問題的解決策略是:在記憶體中儲存字元時還是使用unicode編碼,因為unicode編碼的長度固定,處理起來很方便。而在檔案的儲存中,則使用utf-8編碼,可以壓縮記憶體,節省空間。這裡一般有個自動轉換的機制,即從檔案中讀取utf-8編碼到記憶體時,會自動轉換為unicode編碼,而從記憶體中將字元儲存到檔案時,則自動轉換為utf-8編碼。

unicode和utf8的關係

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

Unicode和UTF 8的關係

今天下午,我突然想搞清楚unicode和utf 8之間的關係,於是就開始在網上查資料。結果,這個問題比我想象的複雜,從午飯後一直看到晚上8 30點,才算初步搞清楚。下面就是我的筆記,主要用來整理自己的思路。但是,我盡量試圖寫得通俗易懂,希望能對其他朋友有用。畢竟,字元編碼是計算機技術的基石,想要熟練...

Unicode 與 UTF 8的關係

要弄清unicode與utf 8的關係,我們還得從他們的 說起,下來我們從剛開始的編碼說起,直到utf 8的出現,我們就會感覺到他們之間的關係 1 ascii碼 我們都知道,在計算機的世界裡,資訊的表示方式只有0和1,但是我們人類資訊表示的方式卻與之大不相同,很多時候是用語言文字 影象 聲音等傳遞資...