java字符編碼探究相關(guān)小函數(shù)

字號(hào):

/**
    *
    *
    * UTF-16 charset 使用 16 位量,因此對(duì)字節(jié)順序敏感。 流的字節(jié)順序可以由 Unicode 字符 ’\uFEFF’
    * 所表示的初始字節(jié)順序標(biāo)記 來(lái)指示。
    *
    * UTF-16BE 16 位 UCS 轉(zhuǎn)換格式,Big Endian(最低地址存放高位字節(jié))字節(jié)順序
    * UTF-16LE 16 位 UCS
    * 轉(zhuǎn)換格式,Little-endian(地址存放低位字節(jié))字節(jié)順序
    *
    * java中 如果沒(méi)有feff的標(biāo)志,則默認(rèn)為 feff
    *
    * @throws UnsupportedEncodingException
    */
    void unicodeShow() throws UnsupportedEncodingException {
    String shz;
    byte[] hz;
    hz = new byte[4];
    hz[0] = (byte) 0xfe;
    hz[1] = (byte) 0xff;
    hz[2] = 0x55;
    hz[3] = 0x4a;
    shz = new String(hz, "utf-16");
    System.out.println(shz);
    hz = new byte[2];
    hz[0] = 0x55;
    hz[1] = 0x4a;
    shz = new String(hz, "utf-16");
    System.out.println(shz);
    hz = new byte[2];
    hz[0] = 0x55;
    hz[1] = 0x4a;
    shz = new String(hz, "utf-16be");
    System.out.println(shz);
    hz = new byte[4];
    hz[0] = (byte) 0xff;
    hz[1] = (byte) 0xfe;
    hz[2] = 0x4a;
    hz[3] = 0x55;
    shz = new String(hz, "utf-16");
    System.out.println(shz);
    hz = new byte[2];
    hz[0] = 0x4a;
    hz[1] = 0x55;
    shz = new String(hz, "utf-16le");
    System.out.println(shz);
    System.out.println("啊 UNICODE:U+554A");
    System.out.print(Integer.toHexString("啊".charAt(0) >> 8 & 0xff));
    System.out.print(" ");
    System.out.print(Integer.toHexString("啊".charAt(0) & 0xff));
    System.out.println();
    for (byte i : "啊".getBytes("utf-16"))
    System.out.print(Integer.toHexString(i & 0xff) + " ");
    System.out.println();
    for (byte i : "啊".getBytes("utf-16be"))
    System.out.print(Integer.toHexString(i & 0xff) + " ");
    System.out.println();
    for (byte i : "啊".getBytes("utf-16le"))
    System.out.print(Integer.toHexString(i & 0xff) + " ");
    System.out.println();
    }