作者tripleleft (連續中離)
看板AndroidDev
標題[問題] 關於telnet連接的編碼問題
時間Fri Jun 26 00:18:02 2015
最近因為某些軟體的風波
所以想自己寫個連接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
推 alog: 走ssh 06/26 02:51
→ alog: telnet有big5跟utf8的問題踩不完 06/26 02:52
→ alog: bbsu = utf8版 06/26 02:52
推 LPH66: EF BF BD 是 UTF-8 的查無此字 (U+FFFD) 06/26 07:52
→ LPH66: 你看一下你從 in 讀進來的 byte 有沒有問題 06/26 07:52
→ LPH66: 我猜你或許需要從 socket 直接讀 byte 才行 06/26 07:53
目前是暫時放棄用telnet連接
改用JSch走ssh
謝謝大家的建議~
※ 編輯: tripleleft (120.127.36.33), 06/26/2015 18:20:36