Unicode 與 UTF-8 編碼對應規則

holderjava


Unicode和BigEndianUnicode 區別


    這二者只是存儲順序不一樣,如"A"的unicode編碼爲65 00 ,BigEndianUnicode編碼爲00 65算法

UTF-8

    注:UTF(UCS Transformation Format):UCS只是規則的如何編碼,可是沒有規則如何傳輸、保管這個編碼。UTF則規則了由幾個字節保管這個編碼。    這是爲傳輸而設計的編碼,其系列還有UTF-7和UTF-16 以及 UTF-32網絡


    其中UTF-16和Unicode編碼大體同樣, UTF-8就是以8位爲單元對Unicode進行編碼。從Unicode到UTF-8的編碼方式以下: 
     Unicode編碼(16進制)      UTF-8 字節流(二進制) 
     0000 - 007F         0xxxxxxx 
     0080 - 07FF         110xxxxx 10xxxxxx 
     0800 - FFFF         1110xxxx 10xxxxxx 10xxxxxx編碼

  例如「漢」字的Unicode編碼是6C49。6C49在0800-FFFF之間,因此確定要用3字節模板了:1110xxxx 10xxxxxx 10xxxxxx。將6C49寫成二進制是:0110 1100 0100 1001,用這個比特流依次代替模板中的x,獲得:11100110 10110001 10001001,即E6 B1 89。url


能夠查看java.io.DataInputStream的readUTF方法的具體實現算法。spa


另外 百度百科裏講的很詳細設計


編碼轉換:code

加入咱們從網絡收到一個unicode 編碼值 x, 可是當前的設備不支持 Unicode 字符集(因此不知道這個x對應的什麼符號),只支持gb2312, 那麼咱們須要經過 unicode編碼表 和 gb2312編碼表 找到 x 對應的gb2312編碼值,而後就能夠找到對應的符號 orm

相關文章
相關標籤/搜索