關於unicode和utf8,utf16等

2021-05-10 06:09:21 字數 1220 閱讀 8783

經常有人談起……我如何把gb或unicode字串轉化成utf8字串?這類的問題   

這裡按照自己的理解簡要說明一下   

unicode是字元編碼的乙個標準,這個和gb2312或者bg5等是對應的,但是unicode又有些比較高階的特殊性,unicode的編碼是固定的,但是表示這個編碼的形式是多種多樣的,比如乙個字元的unicode編碼是0xabcd,可以有各種形式來表示這個0xabcd,而通常所說的"unicode字串"是指unicode編碼的雙位元組表示法,比如編碼0xabcd就會表示成0xabcd,編碼0x31就表示成雙位元組的0x0031,而utf-8,utf-16是指其他形式的表示法,比如說utf8,見下面的對應表:   

*   u-00000000   –   u-0000007f:     0******x       

*   u-00000080   –   u-000007ff:     110***xx   10******       

*   u-00000800   –   u-0000ffff:     1110***x   10******   10******       

*   u-00010000   –   u-001fffff:     11110***   10******   10******   10******      

*   u-00200000   –   u-03ffffff:     111110xx   10******   10******   10******   10******       

*   u-04000000   –   u-7fffffff:     1111110x   10******   10******   10******   10******   10******       

就是說在0x00-0x7f段之間的unicode字元,表示成他的本身,比如0x31(字元1)用utf-8的形式儲存成0x31,占用乙個位元組。   

0x80-0x7ff段之間的字元(二進位制大於等於8位小於等於11位之內的字元)用兩個位元組表示,這兩個位元組的第乙個位元組的前三位為標誌位(110),第二個位元組的前兩位(10)為標誌位,剩下還有11位來表示這個11位以下的unicode字元的編碼   

其他依此類推   

這樣的話,使用utf-8編碼,可以使unicode編碼的大多數為英文本元(<0x7f)的字串占用的空間最少,但是使雙位元組的unicode字元(比如中文)表示來需要三個位元組,比起純粹的雙位元組表示的unicode字串來說,各有利弊吧

unicode和utf8的關係

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

Unicode和utf 8的區別

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

unicode和utf8編碼詳解

大家都知道計算機只能處理數字,所以在計算機中其他字元都需要先轉換為數字0和1才能處理。每8個bit作為乙個位元組,乙個位元位表示乙個乙個字元,乙個位元組就能表示255個字元。而乙個位元組足以表示所有的美國字元,所以美國人編寫了自己的ascii編碼,作為自己的統一編碼。但是漢字不止255個,所以中國用...