[问题] 关于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