unicode和utf8編碼詳解

2021-08-07 21:14:34 字數 882 閱讀 4154

大家都知道計算機只能處理數字,所以在計算機中其他字元都需要先轉換為數字0和1才能處理。每8個bit作為乙個位元組,乙個位元位表示乙個乙個字元,乙個位元組就能表示255個字元。

而乙個位元組足以表示所有的美國字元,所以美國人編寫了自己的ascii編碼,作為自己的統一編碼。但是漢字不止255個,所以中國用兩個位元組表示乙個漢字,編寫了gb2312編碼作為自己的統一編碼。同理,日本南韓等國家也都編寫了自己的標準編碼。但是各國的編碼標準不同,統一顯示就會出現亂碼。

由此,unicode編碼產生了,將所有語言統一到一套編碼裡。

但是unicode的編碼占用的記憶體比較大,舉個例子。漢字「中」的unicode編碼是兩個位元組即16個位元位,而英文本母只有乙個位元組即8個位元位,所以unicode在表示ascii編碼的英文本元時會在ascii編碼的基礎上在編碼前加上8個0.。所以unicode編碼會比ascii編碼多需要一倍的記憶體空間,傳輸時也同樣要多傳輸一倍的量。

看上去比ascii編碼多需要一倍的空間,怎麼辦?將unicode編碼轉換為可變長度的utf-8(後面為了方便會直接寫成utf8)編碼。utf8將用乙個位元組表示英文本元,用三個位元組表示中文,比較偏僻的中文會用4-6個位元組表示,如果需要傳輸大量的英文,utf8的作用就非常明顯了。

那麼問題又來了,如果計算機內部處理的是utf8的可變長編碼,就相對來說比較複雜了,畢竟是不定長的,不如處理定長的unicode編碼方便快捷。所以計算機內部處理編碼時會牽扯到unicode和utf8的轉換。怎麼說呢?計算機得到一串utf8編碼的字元,會先將其轉換為unicode編碼的字元,處理完了會再將其轉換為utf8編碼的字元進行輸出。如下圖:

本文學習自imooc,錯誤理解之處望加指正。

unicode編碼和utf 8編碼詳解

unicode是國際通用編碼,utf 8編碼是unicode編碼在網路之間 主要是網頁 傳輸時的一種 變通 和 橋梁 編碼。utf 8在網路之間傳輸時可以節約資料量。所以,使用作業系統無法搜尋出txt文字。按照utf 8創始人的願望 端 unicode 傳輸 utf 8 端 unicode 但是,後...

Unicode編碼和utf 8編碼的區別

字符集 是一堆字元組成的集合,用來指定位元組或者字串對映成二進位制的規則 在計算機中儲存的,無論是位元組還是字串都是以二進位制模式儲存的。因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元 bit 作為乙個位元組 byte 所以,乙個位元組能表...

帶你了解 Unicode和UTF 8編碼知識

一直以來總是對 unicode,utf 8 等編碼知識懵懵懂懂的,尤其是在做專案過程中只要涉及到幾個編碼之間的轉換,都得到網上搜尋一番,根據別人的經驗照葫蘆畫瓢,才能解決問題,但是私底下卻完全不懂在做什麼。我再也不願意重複這種狀態了,於是就花了乙個上午的時間,將這些知識整理了一遍。如果您覺得我的總結...