[問題] 關於telnet連接的編碼問題

看板AndroidDev作者 (連續中離)時間9年前 (2015/06/26 00:18), 9年前編輯推噓3(305)
留言8則, 3人參與, 最新討論串1/2 (看更多)
最近因為某些軟體的風波 所以想自己寫個連接PTT的軟體 目前的寫法是開一個新的Thread跑socket socket = new Socket(host, port); 然後參考版上讀取的方法 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); in.readLine(); 不過編碼一直出問題 (使用String S = new String(in.readLine().getBytes(),"BIG5");) 所以把他拆開來讀取 byte[] data = in.readLine().getBytes(); for迴圈跑S+= Byte.toString(data[num]) + ","; 然後把他印出來 System.out.println(S); 然後就發現只要遇到中文字或全形符號他的編碼就會變成-17 -65 -67(0xEF 0xBF 0xBD) (甚至不是偶數的倍數到底是怎麼回事) 想問問到底是我寫的問題有問題還是我編碼的方式不對 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.127.36.33 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1435249088.A.DCA.html

06/26 02:51, , 1F
走ssh
06/26 02:51, 1F

06/26 02:51, , 2F
ssh bbsu@ptt.cc
06/26 02:51, 2F

06/26 02:52, , 3F
telnet有big5跟utf8的問題踩不完
06/26 02:52, 3F

06/26 02:52, , 4F
bbsu = utf8版
06/26 02:52, 4F

06/26 07:52, , 5F
EF BF BD 是 UTF-8 的查無此字 (U+FFFD)
06/26 07:52, 5F

06/26 07:52, , 6F
你看一下你從 in 讀進來的 byte 有沒有問題
06/26 07:52, 6F

06/26 07:53, , 7F
我猜你或許需要從 socket 直接讀 byte 才行
06/26 07:53, 7F
目前是暫時放棄用telnet連接 改用JSch走ssh 謝謝大家的建議~ ※ 編輯: tripleleft (120.127.36.33), 06/26/2015 18:20:36

07/04 01:45, , 8F
請參考https://moztw.org/docs/big5/ UAO 2.50 b2u
07/04 01:45, 8F
文章代碼(AID): #1LZ2d0tA (AndroidDev)
文章代碼(AID): #1LZ2d0tA (AndroidDev)