请教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说明。