请教banq

03-04-03 arthas
banq大哥,我有两个难题想请教。
1.我用JAVA NIO建立的SOCKET SERVER,如果接受包括中文的流,则报例外MalformedInputException,难道不支持中文吗。
2.如果我接受稍微长一些的内容,则开头会随机的多出现一个字符,不知为什么。

代码如下:
int nBytes = 0;
socket = (SocketChannel)key.channel();
ByteBuffer buf = ByteBuffer.allocate(1024);
try
{
nBytes = socket.read(buf);
//System.out.println("recevice bytes: " + nBytes);
buf.flip();
Charset charset = Charset.forName("UTF-8");
CharsetDecoder decoder = charset.newDecoder();
CharBuffer charBuffer = decoder.decode(buf);
result = charBuffer.toString();
System.out.println("received string: " + result.trim());
}
catch(IOException e)
{
e.printStackTrace();
}

arthas
2003-04-03 14:25
补充一下,我想从C++的CLIENT发信息

banq
2003-04-03 20:46
可能是你byte转换成char时有问题,NIO不区分字符串编

第2个问题还是在你转换字符时发生,我记得有个标准的byte==>字符的写法,你查一下Sun的NIO说明。