/**
*
*
* UTF-16 charset 使用 16 位量,因此對字節順序敏感。 流的字節順序可以由 Unicode 字符 '/uFEFF'
* 所表示的初始字節順序標記 來指示。
*
* UTF-16BE 16 位 UCS 轉換格式,Big Endian(最低地址存放高位字節)字節順序
* UTF-16LE 16 位 UCS
* 轉換格式,Little-endian(最高地址存放低位字節)字節順序
*
* java中 如果沒有feff的標誌,則默認爲 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();
}