最近项目使用NIO作为Socket通讯架构, 其中使用到org.apache.mina.common.ByteBuffer传输信息,
其中方法buf.getString(size,Charset.forName("utf-8").newDecoder());频频报出java.nio.charset.MalformedInputException: Input length = 1,查询资料发现是由于转码原因导致,由于通讯端回传数据为使用utf-8编码器故报该异常,更正字符编码后bingo!
另获取byteBuffer内容方法 //网上资料说byteBuffer的默认字符集为UTF-16BE
buf.asCharBuffer().toString().getBytes("UTF-16BE"),"utf-8")