String
getBytes()
方法的语法是:
string.getBytes() string.getBytes(Charset charset) string.getBytes(String charsetName)
这里,
string 是
String
类的对象。
getBytes()
方法返回一个字节数组。
1. getBytes() 不带任何参数
如果不传递任何参数,
getBytes()
将使用平台的默认字符集对字符串进行编码。
示例: 不带任何参数的 getBytes()
import java.util.Arrays; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; // convert the string to a byte array // using platform's default charset byteArray = str.getBytes(); System.out.println(Arrays.toString(byteArray)); } }
输出
[74, 97, 118, 97]
注意: 我们在上面的例子中使用了 Arrays 类以可读的形式打印字节数组。它与 getBytes() 无关。
2. getBytes() 带 CharSet 参数
这里有不同的
UTF-8-八位 UCS 转换格式
UTF-16-十六位 UCS 转换格式
UTF-16BE-十六位 UCS 转换格式,大端字节序
UTF-16LE-十六位 UCS 转换格式,小端字节序
US-ASCII-七位 ASCII
ISO-8859-1-ISO 拉丁字母第 1 号
CharSet
在 java 中可用:
示例: getBytes() with CharSet 参数
import java.util.Arrays; import java.nio.charset.Charset; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; // using UTF-8 for encoding byteArray = str.getBytes(Charset.forName("UTF-8")); System.out.println(Arrays.toString(byteArray)); // using UTF-16 for encoding byteArray = str.getBytes(Charset.forName("UTF-16")); System.out.println(Arrays.toString(byteArray)); } }
输出
[74, 97, 118, 97] [-2,-1, 0, 74, 0, 97, 0, 118, 0, 97]
注意: 在上面的程序中,我们导入了java.nio.charset.Charset来使用CharSet。并且,我们导入了 Arrays 类,以可读的形式打印字节数组。
3. getBytes() 带字符串参数
您还可以使用字符串将编码类型指定为
getBytes()
。以这种方式使用
getBytes()
时,必须将代码包裹在 try...catch 中阻止。
示例: getBytes() 带字符串参数
import java.util.Arrays; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; try { byteArray = str.getBytes("UTF-8"); System.out.println(Arrays.toString(byteArray)); byteArray = str.getBytes("UTF-16"); System.out.println(Arrays.toString(byteArray)); // wrong encoding // throws an exception byteArray = str.getBytes("UTF-34"); System.out.println(Arrays.toString(byteArray)); } catch (Exception e) { System.out.println(e + " encoding is wrong"); } } }
输出
[74, 97, 118, 97] [-2,-1, 0, 74, 0, 97, 0, 118, 0, 97] java.io.UnsupportedEncodingException: UTF-34 encoding is wrong
注意: 我们已经导入了 java.util.Arrays 以可读的形式打印字节数组。它与 getBytes() 无关。