当我运行此程序时,我输入的用户名为"dcole"
,密码为"test"
,但当我输入时,会返回"ÿûÿû ÿûÿû'ÿýÿûÿýdcole"
和"ÿþÿþ ÿþÿþ'ÿütest"
。这是代码:
clientoutput.write("Please enter your username: ".getBytes("UTF-8"));
clientoutput.flush();
String username = clientinput.readLine();
out("Client " + clientip + " logged in as " + username);
String askforpass = "Please enter the password for " + username + ": ";
clientoutput.write(askforpass.getBytes());
clientoutput.flush();
String password = clientinput.readLine();
out(password);
控制台:
Client connected with the IP /127.0.0.1
Client /127.0.0.1 logged in as ÿûÿû ÿûÿû'ÿýÿûÿýdcole ÿþÿþ ÿþÿþ'ÿütest
答案 0 :(得分:0)
也许你正在使用带有错误字符集的BufferedReader。
查看here,当您实例化新的InputStreamReader时,您可以定义字符集。
答案 1 :(得分:0)
如果输入流是纯UTF-8,则“dcole”和“test”不太可能出现乱码。 (如果你使用Latin-1或ASCII来解码字节,那么它们会很好,还有很多其他字符集。)的确,你看到了预期的字符,但前面有额外的垃圾。
我怀疑客户端实际上在用户名和密码之前有一些额外的字节。换句话说,它不是发送简单的文本 - 它是在一些你没有描述的协议中发送消息。
事实上,我认为这个SO问题可以解释您的问题:Odd Behavior when Connecting to my Program