因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為乙個位元組(byte),所以,乙個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),0 - 255被用來表示大小寫英文本母、數字和一些符號,這個編碼表被稱為ascii編碼,比如大寫字母a的編碼是65,小寫字母z的編碼是122。
如果要表示中文,顯然乙個位元組是不夠的,至少需要兩個位元組,而且還不能和ascii編碼衝突,所以,中國制定了gb2312編碼,用來把中文編進去。
類似的,日文和韓文等其他語言也有這個問題。為了統一所有文字的編碼,unicode應運而生。unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。
首先,unicode是編碼字符集,而utf-8、utf-16、utf-32是字符集編碼,utf-8以位元組為單位對unicode進行編碼,utf-16編碼以16位無符號整數為單位,而utf-32編碼以32位無符號整數為單位。通俗易懂地理解就是utf-8用1-4個位元組來儲存unicode編碼的字元。 utf-16只能是選兩位元組或四位元組來儲存字元 ,而utf-32就是把所有的字元都用32bit也就是4個位元組來表示。 下附圖表:
unicode編碼(十六進製制)
utf-8 位元組流(二進位制)
000000-00007f
0******x
000080-0007ff
110***xx 10******
000800-00ffff
1110***x 10****** 10******
010000-10ffff
11110***10******10******10******
關於unicode編碼的研究
以前寫過一篇貼子是寫中文在unicode中的編碼範圍 unicode中文範圍 但寫的不是很詳細,今天再次研究了下unicode,並給出詳細的unicode取值範圍。本次研究的unicode物件是unicode 5.2.0版本。現在最新的是6.0版 對於這次研究的unicode把編碼分為以下幾個平面 ...
iOS 關於unicode編碼
網路通訊過程中常用的的一種編碼及解碼的方法,算是簡單的加密.一 pragma mark 將nsstring轉化為unicode字串 nsstring turntounicodewith nsstring curstr return result uppercasestring 二 pragma ma...
關於ASCII和Unicode字集
void cdrawview onlbuttondown uint nflags,cpoint point 錯誤 error c2664 cwnd messageboxw 不能將引數 1 從 const char 75 轉換為 lpctstr messagebox t don t create do...