Java 中的 Unicode 到 UTF-8 轉換


在進行轉換之前,讓我們先了解一下 Unicode 和 UTF-8。

Unicode 是一種國際字元編碼標準,能夠表示全球大多數書面語言。Unicode 使用十六進位制表示字元。Unicode 是一種 16 位字元編碼系統。最小值為 \u0000,最大值為 \uFFFF。

UTF-8 是一種可變長度字元編碼。UTF-8 可以像 ASCII 一樣緊湊,但也包含任何 Unicode 字元,檔案大小會略有增加。“UTF”代表 Unicode 轉換格式。“8”表示它分配 8 位塊來表示一個字元。表示一個字元所需的塊數從 1 到 4 不等。

為了在 Java 中將 Unicode 轉換為 UTF-8,我們使用 getBytes() 方法。getBytes() 方法將字串編碼成位元組序列並返回一個位元組陣列。

宣告 - getBytes() 方法宣告如下。

public byte[] getBytes(String charsetName)

其中 charsetName 是將字串編碼成位元組陣列的特定字元集。

讓我們看一個使用 getBytes() 方法在 Java 中將 Unicode 轉換為 UTF-8 的程式。

示例

 線上演示

public class Example {
   public static void main(String[] args) throws Exception {
      String str1 = "\u0000";
      String str2 = "\uFFFF";
      byte[] arr = str1.getBytes("UTF-8");
      byte[] brr = str2.getBytes("UTF-8");
      System.out.println("UTF-8 for \u0000");
      for(byte a: arr) {
         System.out.print(a);
      }
      System.out.println("
UTF-8 for \uffff" );       for(byte b: brr) {          System.out.print(b);       }    } }

輸出

UTF-8 for \u0000
0
UTF-8 for \uffff
-17-65-65

讓我們理解上面的程式。我們建立了兩個字串。

String str1 = "\u0000";
String str2 = "\uFFFF";

String str1 賦值為 \u0000,這是 Unicode 中的最小值。String str2 賦值為 \uFFFF,這是 Unicode 中的最大值。

為了將它們轉換為 UTF-8,我們使用 getBytes(“UTF-8”) 方法。這將給我們一個如下所示的位元組陣列:

byte[] arr = str1.getBytes("UTF-8");
byte[] brr = str2.getBytes("UTF-8");

然後,為了列印位元組陣列,我們使用增強的 for 迴圈,如下所示:

for(byte a: arr) {
   System.out.print(a);
}
for(byte b: brr) {
   System.out.print(b);
}

更新於:2020年6月26日

12K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告