Java String getBytes()方法將字符串編碼為字節(jié)序列,并將其存儲在字節(jié)數(shù)組中。
String getBytes()方法的語法為:
string.getBytes() string.getBytes(Charset charset) string.getBytes(String charsetName)
getBytes()方法返回一個字節(jié)數(shù)組。
如果不傳遞任何參數(shù),getBytes()則使用平臺的默認字符集對字符串進行編碼。
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
//將字符串轉(zhuǎn)換為字節(jié)數(shù)組
//使用平臺的默認字符集
byteArray = str.getBytes();
System.out.println(Arrays.toString(byteArray));
}
}輸出結(jié)果
[74, 97, 118, 97]
注意:在上面的示例中,我們使用Arrays類以可讀的形式打印字節(jié)數(shù)組。它與getBytes()無關(guān)。
這是CharSetJava中可用的其他方法:
UTF-8 - 八位UCS轉(zhuǎn)換格式
UTF-16 - 十六位UCS轉(zhuǎn)換格式
UTF-16BE - 十六位UCS轉(zhuǎn)換格式,大端字節(jié)順序
UTF-16LE - 十六位UCS轉(zhuǎn)換格式,小尾數(shù)字節(jié)順序
US-ASCII - 七位ASCII
ISO-8859-1 - ISO拉丁字母1號
import java.util.Arrays;
import java.nio.charset.Charset;
class Main {
public static void main(String[] args) {
String str = "Java";
byte[] byteArray;
//使用UTF-8進行編碼
byteArray = str.getBytes(Charset.forName("UTF-8"));
System.out.println(Arrays.toString(byteArray));
//使用UTF-16進行編碼
byteArray = str.getBytes(Charset.forName("UTF-16"));
System.out.println(Arrays.toString(byteArray));
}
}輸出結(jié)果
[74, 97, 118, 97] [-2, -1, 0, 74, 0, 97, 0, 118, 0, 97]
注意:在上面的程序中,我們導入了java.nio.charset.Charset以使用CharSet。 并且,我們已經(jīng)導入了Arrays類,以一種可讀的形式打印字節(jié)數(shù)組。
還可以使用字符串指定getBytes()的編碼類型。getBytes()以這種方式使用時,必須將代碼包裝在try ... catch塊中。
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));
//錯誤的編碼
//拋出異常
byteArray = str.getBytes("UTF-34");
System.out.println(Arrays.toString(byteArray));
} catch (Exception e) {
System.out.println(e + " encoding is wrong");
}
}
}輸出結(jié)果
[74, 97, 118, 97] [-2, -1, 0, 74, 0, 97, 0, 118, 0, 97] java.io.UnsupportedEncodingException: UTF-34 encoding is wrong
注意:我們已經(jīng)導入了java.util。數(shù)組以可讀形式打印字節(jié)數(shù)組。它與getBytes()無關(guān)。