holderjava
這二者只是存儲順序不一樣,如"A"的unicode編碼爲65 00 ,BigEndianUnicode編碼爲00 65算法
注: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