Charsets
在Java語言中过吻,java每個(gè)版本中都支持六種標(biāo)準(zhǔn)的字符編碼进泼。
byte[] bytes = someString.getBytes();
在上述的代碼中其實(shí)有個(gè)問題,因?yàn)闆]有指定字符編碼纤虽,其會(huì)返回得到一個(gè)操作系統(tǒng)默認(rèn)編碼格式的字節(jié)數(shù)組乳绕。如果你的someString的編碼不是系統(tǒng)默認(rèn)的編碼格式,有時(shí)候會(huì)出現(xiàn)問題逼纸,考慮下面的方式:
try{
bytes = "foobarbaz".getBytes("UTF-8");
}catch (UnsupportedEncodingException e){
//This really can't happen UTF-8 must be supported
}
但是上面的代碼仍有兩個(gè)問題:
第一個(gè):UTF-8肯定是Java平臺(tái)支持的洋措,所以UnsupportedEncodingException異常永遠(yuǎn)都不會(huì)拋出;
第二個(gè):因?yàn)橹付ǖ木幋a格式是手寫指定的編碼樊展,可能會(huì)寫錯(cuò)呻纹,導(dǎo)致出現(xiàn)異常。
這時(shí)候Google Guava中的Charsets類就派上用途了专缠。Charsets類中提供了六種標(biāo)準(zhǔn)字符編碼的靜態(tài)引用雷酪,例如,上面的代碼可以改為:
byte[] bytes2 = "foobarbaz".getBytes(Charsets.UTF_8);
注意:在JDK 7上涝婉,java默認(rèn)提供了StandardCharsets類來提供六種標(biāo)準(zhǔn)字符編碼的靜態(tài)引用哥力。