在学习Netty的时候用到了 Charset 字符解码工具类
ctx.write(Unpooled.copiedBuffer("Hello, I am client!", CharsetUtil.UTF_8));
从源码中可以看出常用的格式有:UTF_16,UTF_8,ISO_8859_1,US_ASCII。如果需要用到UTF_32,则无法直接调用。
public final class CharsetUtil {
/**
* 16-bit UTF (UCS Transformation Format) whose byte order is identified by
* an optional byte-order mark
*/
public static final Charset UTF_16 = Charset.forName("UTF-16");
/**
* 16-bit UTF (UCS Transformation Format) whose byte order is big-endian
*/
public static final Charset UTF_16BE = Charset.forName("UTF-16BE");
/**
* 16-bit UTF (UCS Transformation Format) whose byte order is little-endian
*/
public static final Charset UTF_16LE = Charset.forName("UTF-16LE");
/**
* 8-bit UTF (UCS Transformation Format)
*/
public static final Charset UTF_8 = Charset.forName("UTF-8");
/**
* ISO Latin Alphabet No. 1, as known as <tt>ISO-LATIN-1</tt>
*/
public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
/**
* 7-bit ASCII, as known as ISO646-US or the Basic Latin block of the
* Unicode character set
*/
public static final Charset US_ASCII = Charset.forName("US-ASCII");
}
进一步查看Charset.forName()方法
public static Charset forName(String charsetName) {
Charset cs = lookup(charsetName);
if (cs != null)
return cs;
throw new UnsupportedCharsetException(charsetName);
}
CharsetUtil.UTF_32可以由Charset.forName("UTF-32")来替代。
CharsetUtil.UTF_8 = Charset.forName("UTF-32")