Java String getBytes()方法將字符串編碼為字節(jié)序列,并將其存儲(chǔ)在字節(jié)數(shù)組中。
String getBytes()方法的語法為:
string.getBytes() string.getBytes(Charset charset) string.getBytes(String charsetName)
getBytes()方法返回一個(gè)字節(jié)數(shù)組。
如果不傳遞任何參數(shù),getBytes()則使用平臺(tái)的默認(rèn)字符集對(duì)字符串進(jìn)行編碼。
import java.util.Arrays; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; //將字符串轉(zhuǎn)換為字節(jié)數(shù)組 //使用平臺(tái)的默認(rèn)字符集 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號(hào)
import java.util.Arrays; import java.nio.charset.Charset; class Main { public static void main(String[] args) { String str = "Java"; byte[] byteArray; //使用UTF-8進(jìn)行編碼 byteArray = str.getBytes(Charset.forName("UTF-8")); System.out.println(Arrays.toString(byteArray)); //使用UTF-16進(jìn)行編碼 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]
注意:在上面的程序中,我們導(dǎo)入了java.nio.charset.Charset以使用CharSet。 并且,我們已經(jīng)導(dǎo)入了Arrays類,以一種可讀的形式打印字節(jié)數(shù)組。
還可以使用字符串指定getBytes()的編碼類型。getBytes()以這種方式使用時(shí),必須將代碼包裝在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)); //錯(cuò)誤的編碼 //拋出異常 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)導(dǎo)入了java.util。數(shù)組以可讀形式打印字節(jié)數(shù)組。它與getBytes()無關(guān)。