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

作者: tripleleft (連續中離)   2015-06-26 00:18:02
最近因為某些軟體的風波
所以想自己寫個連接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)
(甚至不是偶數的倍數到底是怎麼回事)
想問問到底是我寫的問題有問題還是我編碼的方式不對
作者: alog (A肉哥)   2015-06-26 02:51:00
走sshssh bbsu@ptt.cctelnet有big5跟utf8的問題踩不完bbsu = utf8版
作者: LPH66 (-6.2598534e+18f)   2015-06-26 07:52:00
EF BF BD 是 UTF-8 的查無此字 (U+FFFD)你看一下你從 in 讀進來的 byte 有沒有問題我猜你或許需要從 socket 直接讀 byte 才行
作者: felixgugu (felix)   2015-07-04 01:45:00
請參考https://moztw.org/docs/big5/ UAO 2.50 b2u

Links booklink

Contact Us: admin [ a t ] ucptt.com