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