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+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告