在进行转换之前,让我们了解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); }