亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

java中的編碼

2019-11-14 22:11:47
字體:
來源:轉載
供稿:網友
java中的編碼

來源:https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/#icomments

在計算機用使用0、1來保存數據,存儲的單位是字節(8bit/8位),每字節保存的最大數字是256,只保存英文可以,但是加上漢字就需要擴展了。

ASCII編碼

  總共有128位,用一個字節的低7位表示,0-31是控制字條換行回車刪除等,32-126是可打印字符。

ISO-8859-1

  ISO組織在ASCII碼基礎上又制定了一些列標準用來擴展ASCII編碼,它們是ISO-8859-1~ISO-8859-15,其中ISO-8859-1涵不蓋了大多數西歐字符。ISO-8859-1仍為單字節編碼,共能表示256個字符。

GB2312

  全稱叫《信息交換用漢字編碼字符集基本集》,雙字節編碼,總范圍是A1~F7,其中A1~A9是符號區,共包含682個符號。從B0~F7是漢字區,包含6763個漢字。

GBK

  全稱叫《漢字內碼擴展規范》,擴展GB2312,能表示21003個漢字,與GB2312兼容。

GB18030

  全稱叫《信息交換用漢字編碼字符集》,與GB2312兼容。國家標準,但使用中并不廣泛。

UTF-16

  UTF-16具體定義了Unicode(Universal Code統一碼)字符在計算機中存取方法。用兩個字節來表示任何字符,共16個bit,所以叫UTF-16。Java以UTF-16作為內存的字符存儲模式。

UTF-8

  UTF-16統一采用兩個字節表示一個字符,雖然方便,但有很大一部分的字符用一個字節就可以表示的現在要用兩個字節表示,存儲空間放大了一倍。

  UTF-8采用了變長技術,規則如下:

  1、如果一個字節,最高位(第8位)是0,表示這是一個ASCII字條(00~7F)??梢姡蠥SCII編碼已經是UTF-8了。

  2、如果一個字節,以11開頭,連續的1的個數暗示這個字符的字節數,例如:110xxxxx代表字是雙字節UTF-8字符的首字節。

  3、如果一個字節,以10開始,表示它不是首字節,需要向前查找才能得到當前字符的首字節。

 如下代碼:打印出編碼的16進制

public static void main(String[] args) {        String test = "a 北京";        System.out.PRintln(Arrays.toString(test.getBytes()));        printHex(test.getBytes());        try {            byte[] iso8859 = test.getBytes("ISO-8859-1");            printHex(iso8859);            byte[] gb2312 = test.getBytes("GB2312");             printHex(gb2312);             byte[] gbk = test.getBytes("GBK");             printHex(gbk);             byte[] utf16 = test.getBytes("UTF-16");             printHex(utf16);             byte[] utf8 = test.getBytes("UTF-8");             printHex(utf8);         } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }    }        public static void printHex(byte[] array){        for(byte aByte : array){            System.out.print(Integer.toHexString(aByte & 0xFF) + " ");        }        System.out.println();    }

輸出結果:

[97, 32, -79, -79, -66, -87]61 20 b1 b1 be a9 61 20 3f 3f 61 20 b1 b1 be a9 61 20 b1 b1 be a9 fe ff 0 61 0 20 53 17 4e ac 61 20 e5 8c 97 e4 ba ac 

 1。System.out.println(Arrays.toString(test.getBytes()));默認打印出系統默認編碼(GBK)的結果

  97 32 -79 -79 -66 -87(其中97對應ascii中的a,32對應ascii中的空格)

 2.printHex(test.getBytes()); 按16進制打印結果61 20 b1 b1 be a9

3."ISO-8859-1"編碼將[b1 b1]轉換為 3f, [be a9]轉換為3f.ISO-8859-1是單字節編碼,中文被轉化成3f的byte,也就是“?”字符。中文字符經過ISO-8859-1編碼會丟失信息,會把不認識的字符吸收掉。

4."GB2312",英文字母保存為1個字節,漢字保存為兩字節 北->[b1 b1],京 -> [be a9]

5."GBK" 編碼同GB2312

6."UTF-16",每個字母或漢字都保存為兩個字節.

  [fe ff 0 61 0 20 53 17 4e ac]結果中: [fe ff]表示Big Endian。

    Big Endian:假設一個字符由兩上字節來表示 0xabcd,那么在存儲時是按[ab cd] 來存儲還是按[cd ab]的順利來存儲。如果按[ab cd]來存儲,則稱為 big Endian, 如果存儲按[cd ab],則稱為 Little Endian。

  00 61 為字符"a", [00 20] 為空格, [53 17]代表UTF-16中的“北”,[4e ac]為“京”

7."UTF-8"結果:61 20 e5 8c 97 e4 ba ac

  其中 61的二進制為( 0110 0001)根據UTF-8的規則,首位為0,表示這是一個ASCII碼,一個字節表示,得到“a",同理[20]得到空格。

  第三個字節e5二進制為(1110 1001)為111開頭,表示這是一個三字節的開始。第四個字節 8c 二進制(1000 1100)表示為一個字節延續,第五個字節 97二進制為(1001 0111)。

    e5->1110 1001去除表示字節開始的前四位,得到 --> 1001,

    8c-> 1000 1100 去除表示順序的前兩位,得到--> 001100,

    97-> 1001 0111 去除表示順序的前兩位,得到--> 010111;

    將1001, 001100, 010111組合 [1001, 0011, 0001, 0111]得到16進制[53, 17]正好與UTF-8中的“北”相對應。

  同理,“e4 ba ac”代表“京”

在代碼打印16進制的方法中

System.out.print(Integer.toHexString(aByte & 0xFF) + " ");

  一個Byte值與0xFF后調用Integer的toHexstring方法。原因在于若該byte值為負時,例: -79,Java的byte保存為1個字節,補碼的結果為(1011 0001,16進制 0xb1),會強轉為Java中的負數的int,java中的int保存為4字節(11111111 11111111 11111111 10110001,16進制為 0xffffffb1).

  在此處與0xFF后,會將int中的前三個字節中的1改為0,這樣得到的結果就會為0xb1.

Integer中的toHexString()

  Integer中的tohexString, toBinaryString,toOctalString 都會調用方法toUnsignedString( int i, int shift),參數 shift的值,toBinaryString為1,toOctalString,toHexString為4.

private static String toUnsignedString(int i, int shift) {char[] buf = new char[32];int charPos = 32;int radix = 1 << shift;    //shift為4,相當于*2^4=8int mask = radix - 1;    //mask=7( 0000 1111)do {          // i & mask 得到i的最未端四位二進行數字,例 i=25(0001 1001), i&mask=9(1001)         //digits為數組,第9個得到char[9]='9'    buf[--charPos] = digits[i & mask];         // >>>為無符號位右移,高位補0. ps:25(0001 1001)向右移動4位得到1(0000 0001)        // >> 為有符號位右移,若為正數,高位補0,若為負數,高位補1.    i >>>= shift;} while (i != 0);return new String(buf, charPos, (32 - charPos));    }

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩高清中文字幕| 国产精品女主播| 亚洲成av人乱码色午夜| 91九色单男在线观看| 日韩一区二区在线视频| 国产精品极品美女在线观看免费| 欧美三级xxx| 欧美日韩精品在线播放| 欧美肥臀大乳一区二区免费视频| 国模吧一区二区三区| 亚洲精品久久久久久下一站| 亚洲欧美国产高清va在线播| 国产在线视频一区| 欧美精品亚州精品| 中文字幕亚洲无线码在线一区| 久久香蕉精品香蕉| 国产精品男人的天堂| 日韩av在线精品| 久久综合久久美利坚合众国| 亚洲另类欧美自拍| 伊人久久大香线蕉av一区二区| 91网站在线免费观看| 成人国产精品日本在线| 国产精品影片在线观看| 538国产精品一区二区免费视频| 91精品免费看| 欧美大肥婆大肥bbbbb| 97香蕉久久超级碰碰高清版| 日韩精品电影网| 欧美日韩美女在线| 日韩极品精品视频免费观看| 久久精品亚洲精品| 日韩免费在线看| 国内精品中文字幕| 日韩精品极品在线观看| 国产精品嫩草影院久久久| 日韩中文字幕在线免费观看| 亚洲精品国精品久久99热一| 4k岛国日韩精品**专区| 亚洲天堂2020| 日韩av一区二区在线观看| 少妇久久久久久| 欧美性极品xxxx娇小| 91夜夜未满十八勿入爽爽影院| 日韩的一区二区| 国产精品一区二区三区毛片淫片| 国产精品欧美一区二区三区奶水| 久久精品免费电影| 亚洲一品av免费观看| 欧美理论片在线观看| 国外日韩电影在线观看| 国产专区欧美专区| 日韩美女福利视频| 午夜精品福利视频| 亚洲3p在线观看| 亚洲精品免费在线视频| 在线精品播放av| 欧美成人精品在线观看| 欧美视频裸体精品| 国产精品爽爽ⅴa在线观看| 中文字幕亚洲国产| 国产精品成人观看视频国产奇米| 欧美猛交免费看| 久久精品2019中文字幕| 91在线高清免费观看| 色婷婷成人综合| 欧美日韩福利电影| 欧美成人性生活| 日韩精品高清在线观看| 九色精品美女在线| 亚洲人成在线一二| 欧美成人精品xxx| 国产精品久久久久久久久| 成人啪啪免费看| 国产精品久久久久影院日本| 国产精品三级网站| 国产成人免费av| 午夜精品一区二区三区在线视| 超在线视频97| 亚洲一区二区久久久| 久久人人爽亚洲精品天堂| 亚洲黄页视频免费观看| 中文字幕精品—区二区| 中文字幕久精品免费视频| 68精品久久久久久欧美| 国产一区二区激情| 2025国产精品视频| 亚洲午夜久久久久久久| 91亚洲人电影| 久久躁日日躁aaaaxxxx| 综合网中文字幕| 黑人巨大精品欧美一区二区三区| 欧美性受xxx| 日韩欧美综合在线视频| 色婷婷久久av| 国产精品一区二区久久久| 欧美亚洲国产另类| 欧美理论电影在线播放| 国内揄拍国内精品少妇国语| 午夜精品一区二区三区在线视| 欧美壮男野外gaytube| 狠狠躁夜夜躁久久躁别揉| 成人av电影天堂| 国产精品一区专区欧美日韩| 国产精品久久久久久久久久小说| 日韩欧美亚洲综合| 国内精品一区二区三区四区| 欧美成人一二三| 夜夜嗨av色综合久久久综合网| 在线观看欧美www| 日韩经典中文字幕在线观看| 日本成人在线视频网址| 欧美在线影院在线视频| 欧美性猛交xxxx黑人| wwwwwwww亚洲| 一夜七次郎国产精品亚洲| 国产精品美女久久久久久免费| 亚洲视频欧美视频| xxxx性欧美| 久久99久久99精品中文字幕| 夜夜躁日日躁狠狠久久88av| 68精品国产免费久久久久久婷婷| 亚洲综合日韩在线| 成人久久18免费网站图片| 5252色成人免费视频| 亚洲欧美自拍一区| 尤物九九久久国产精品的特点| 亚洲国产美女久久久久| 亚洲男人天堂2019| 日韩精品视频中文在线观看| 欧美性猛交xxxx黑人猛交| 欧美黑人极品猛少妇色xxxxx| 久久免费国产精品1| 成人天堂噜噜噜| 久久国产色av| 国外成人在线视频| 久久久精品视频成人| 26uuu久久噜噜噜噜| 91九色国产社区在线观看| 欧美乱大交做爰xxxⅹ性3| 91免费人成网站在线观看18| 日韩欧美精品免费在线| 精品一区电影国产| 亚洲精品视频网上网址在线观看| 亚洲人精品午夜在线观看| 亚洲人成电影网站色…| 日韩精品在线免费| 亚洲国产精彩中文乱码av| 国产精品99久久久久久白浆小说| 国产精品福利观看| 97超级碰碰碰久久久| 亚洲2020天天堂在线观看| 亚洲国产精品久久久| 日韩av毛片网| 久久久久亚洲精品成人网小说| 欧美激情二区三区| 色悠久久久久综合先锋影音下载| 狠狠躁夜夜躁人人爽天天天天97| 日韩在线视频观看正片免费网站| 欧美激情影音先锋| 欧美日韩国产精品一区二区三区四区| 亚洲国产精品资源| 国产日韩欧美日韩大片| 欧美高跟鞋交xxxxxhd|