java 字符編碼 utf16 utf16be utf16le unicode 探究相關小函數。

/**
  *
  *
  * 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();
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章