實際代碼開發中,經常會用到字符集,UTF-8
、GBK
等。
如:
1,String類裏獲取字節數組的方法:
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException {
// ...
}
public byte[] getBytes(Charset charset) {
// ...
}
2,HttpServletRequest
、HttpServletResponse
設置字符集方法:
// HttpServletRequest
public void setCharacterEncoding(String env) throws java.io.UnsupportedEncodingException;
// HttpServletResponse
public void setCharacterEncoding(String charset);
很多人遇到這種情況就在參數中直接用硬編碼的方式。這樣雖不會造成程序運行錯誤,但也不好維護,建議使用常量的方式。
其實JDK和一些第三方的包中已經爲我們預定義了很多常用的字符集。我們直接拿來使用即可,還不用自己在項目中定義:
JDK自帶的StandardCharsets
類:
注意:該類從JDK1.7纔開始引入。
public final class StandardCharsets {
public static final Charset US_ASCII = Charset.forName("US-ASCII");
public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
public static final Charset UTF_8 = Charset.forName("UTF-8");
public static final Charset UTF_16BE = Charset.forName("UTF-16BE");
public static final Charset UTF_16LE = Charset.forName("UTF-16LE");
public static final Charset UTF_16 = Charset.forName("UTF-16");
}
Apachecomons-compress
包中的CharsetNames
類:
public class CharsetNames {
public static final String ISO_8859_1 = "ISO-8859-1";
public static final String US_ASCII = "US-ASCII";
public static final String UTF_16 = "UTF-16";
public static final String UTF_16BE = "UTF-16BE";
public static final String UTF_16LE = "UTF-16LE";
public static final String UTF_8 = "UTF-8";
}