在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()方法将String编码为字节序列,然后返回字节数组。

声明-该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("\nUTF-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";

为字符串str1分配了\ u0000,这是Unicode中的最小值。为字符串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);
}