2011-01-06 23 views
-2

我从超级终端通过套接字获取数据,我的问题是,当我连续输入数据(像'aaaa'相同的字母)它将被转换为aaáa。第三个字母更改为其他格式。请提供解决方案..我没有从字符串缓冲区连续得到正确的数据

SocketChannel sChannel = (SocketChannel)selKey.channel(); 
ByteBuffer bb=ByteBuffer.allocateDirect(1024); 
sChannel.read(bb); 
bb.flip(); 
Charset charset = Charset.forName("ISO-8859-1"); 
CharsetDecoder decoder = charset.newDecoder(); 
String str=decoder.decode(bb).toString(); 
StringBuffer sb = (StringBuffer)selKey.attachment(); 
sb.append(str); 
bb.clear(); 

String line = sb.toString(); 
if ((line.indexOf("\n") != -1) || (line.indexOf("\r") != -1)) 
{ 
    sb.delete(0,sb.length()); 
    System.out.print(line); 
} 

在此先感谢

+0

什么语言??! – 2011-01-06 11:07:06

+0

java ..第三个字符正在改变.. – pmad 2011-01-06 11:08:07

回答

0

字符集编码的差异吧?

要检查你的JVM使用:Charset.defaultCharset()

什么用你的超级终端?

......你最好还应该提供一个关于如何读取数据的代码,一个可重现的例子。顺便说一句,我不知道任何关于“超级终端”,但你确定这个客户端永远不会插入检查位或类似的东西在流中?