我从超级终端通过套接字获取数据,我的问题是当我连续输入数据时(同样的字母像'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 :(得分:0)
可能是编码差异的字符集?
检查JVM使用的内容:Charset.defaultCharset()
什么使用你的超级终端?
...理想情况下,您还应提供有关如何读取数据的代码,这是一个可重现的示例。顺便说一句,我对“超级终端”一无所知,但你确定这个客户端永远不会在流中插入检查位或类似的东西吗?