Charset:
nio流 传输的内容 要求是 字节 , 字符是不行的 ,字符串当然也不行 ,所以传输的过程中需要字符转化。
通常定义一个方法 : 把传输过去的 ByteBuffer 转化成字符串 。
/***************************** 转码 ********************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testnio;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;//java.nio.charset包中定义了处理字符编码和解码的类;
import java.nio.charset.CharsetDecoder;
/**
*
* @author Administrator
*/
public class TestDeCode {
public static void main(String[] s){
ByteBuffer bb = ByteBuffer.allocate(100);
bb.position(0);
String str = "Hi,just a test我";
str.getBytes();
byte[] arr = str.getBytes();
bb = ByteBuffer.wrap(arr);//编码
int limit = bb.limit();
System.out.println("limit:"+limit);
//ByteBuffer buf = ByteBuffer.wrap(arr,offset,len);
String ss = decode(bb);
System.out.println("ss:"+ss);
}
public static String decode(ByteBuffer buffer) {// 解码
Charset charset = null;
CharsetDecoder decoder = null;
CharBuffer charBuffer = null;
try {
charset = Charset.forName("gb2312");
decoder = charset.newDecoder();
charBuffer = decoder.decode(buffer); //把buffer 转换成Unicode字符编码 存放到CharBuffer 返回;
return charBuffer.toString();
} catch (Exception ex) {
ex.printStackTrace();
return "";
}
}
}