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); }
廣告