Charsets
在Java语言中,java每个版本中都支持六种标准的字符编码。
byte[] bytes = someString.getBytes();
在上述的代码中其实有个问题,因为没有指定字符编码,其会返回得到一个操作系统默认编码格式的字节数组。如果你的someString的编码不是系统默认的编码格式,有时候会出现问题,考虑下面的方式:
try{
bytes = "foobarbaz".getBytes("UTF-8");
}catch (UnsupportedEncodingException e){
//This really can't happen UTF-8 must be supported
}
但是上面的代码仍有两个问题:
第一个:UTF-8肯定是Java平台支持的,所以UnsupportedEncodingException异常永远都不会抛出;
第二个:因为指定的编码格式是手写指定的编码,可能会写错,导致出现异常。
这时候Google Guava中的Charsets类就派上用途了。Charsets类中提供了六种标准字符编码的静态引用,例如,上面的代码可以改为:
byte[] bytes2 = "foobarbaz".getBytes(Charsets.UTF_8);
注意:在JDK 7上,java默认提供了StandardCharsets类来提供六种标准字符编码的静态引用。