utf8和unicode編碼究竟是什么關系?有何區別?
2020-10-23 18:45:57
供稿:網友
UTF8 == Unicode Transformation Format -- 8 bit
是Unicode傳送格式。即把Unicode文件轉換成BYTE的傳送流。
UTF8流的轉換程序:
Input: unsigned integer c - the code point of the character to be encoded (輸入一個unicode值)
Output: byte b1, b2,b3, b4 - the encoded sequence of bytes (輸出四個BYTE值)
Algorithm(算法):
if (c<0x80)
b1 = c>>0 & 0x7F | 0x00
b2 = null
b3 = null
b4 = null
else if (c<0x0800)
b1 = c>>6 & 0x1F | 0xC0
b2 = c>>0 & 0x3F | 0x80
b3 = null
b4 = null
else if (c<0x010000)
b1 = c>>12 & 0x0F | 0xE0
b2 = c>>6 & 0x3F | 0x80
b3 = c>>0 & 0x3F | 0x80
b4 = null
else if (c<0x110000)
b1 = c>>18 & 0x07 | 0xF0
b2 = c>>12 & 0x3F | 0x80
b3 = c>>6 & 0x3F | 0x80
b4 = c>>0 & 0x3F | 0x80
end if
=====================
unicode 是一種編碼表格,例如,給一個漢字規定一個代碼。類似 GB2312-1980, GB18030等,只不過字集不同。
=====================
一個unicode碼可能轉成長度為一個BYTE,或兩個,三個,四個BYTE的UTF8碼,取決于unicode碼的值。英文unicode碼因為值小于0x80,只要用一個BYTE的UTF8傳送,比送unicode兩個BYTEs快。
UTF8是為傳送unicode而想出來的“再編碼”方法罷了。
UTF8轉unicode用我上面給的程序反算即可。
UTF8是現有ASCII系統轉向Unicode系統的一個過渡解決方案。UTF8是保證 ASCII兼容性,再向大字符集方向擴展。這是Unicode推薦的方案。但是因 為解決問題的角度不同,對現有的中文系統不是好的解決方案。 一下連接提供了詳細的 UTF8編碼的初步知識 http://www.acnis.com/modules.php?name=ArticlE&file=article&sid=102 參考資料:http://www.acnis.com/modules.php?name=ArticlE&file=article&sid=102
什么是Unicode。Unicode的基本目標是統一所有的編碼,即它包含所有的字符集。這樣只要一個系統支持Unicode,那么,就能處理這些字符集。一般Unicode有兩個字節?,F在的windows操作系統都是支持Unicode的。
什么是UTF8呢?UTF8是一種Unicode編碼,即它的編碼的字符集和Unicode是一致的。但編碼的方式不一樣。對于英文字符來講,UTF8的編碼和一般的一樣,用到一個字節。但對于中文來講,那么要用三個字節表示(記憶中是三個)。
UTF8和Unicode的缺點是在處理查找、搜索等問題時,好像算法上比較復雜,效率不高(記憶中)。