為了解決本地編碼混亂的問題,Unicode和ISO這兩個組織已經開始開發(fā)一種字符編碼系統(tǒng),可以容納不同國家的字符而不發(fā)生沖突。目前,這兩個組織相互承認,并有兼容的編碼。
目前,許多計算機系統(tǒng)使用2字節(jié)(16位整數(shù))或4字節(jié)(32位整數(shù))統(tǒng)一編碼。統(tǒng)一編碼只描述每個字符的編碼,但沒有解釋如何將編碼存儲在存儲介質上。
目前,計算機系統(tǒng)中有前高字節(jié)和前低字節(jié)兩種整數(shù)存儲模式,因此前高字節(jié)的數(shù)據(jù)在前低字節(jié)的系統(tǒng)中會出現(xiàn)異常,反之亦然。同時,我們知道很多編程系統(tǒng)在處理字符串時,都會把值為0的字節(jié)作為字符串的結尾,不管是前高字節(jié)還是前低字節(jié),字符串中都會出現(xiàn)大量值為0的字節(jié),因此傳統(tǒng)的字符串處理功能無法使用。
為了解決統(tǒng)一編碼的存儲和與現(xiàn)有字符串處理函數(shù)兼容的問題,引入了utf8編碼。這種編碼規(guī)定了統(tǒng)一編碼的存儲方式,并確保值為0的字節(jié)仍然用作字符串的結尾,這樣就可以繼續(xù)使用原來的字符串處理函數(shù),而不需要開發(fā)新的集合。
當然,utf8也有一個問題,那就是它是可變長度編碼。統(tǒng)一編碼的字符可以編碼為一個字節(jié)、兩個字節(jié)、三個字節(jié)、四個字節(jié)(版本1)或六個字節(jié)(版本2)。