2011-01-06 70 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()

什麼用你的超級終端?

......你最好還應該提供一個關於如何讀取數據的代碼,一個可重現的例子。順便說一句,我不知道任何關於「超級終端」,但你確定這個客戶端永遠不會插入檢查位或類似的東西在流中?