2

当我运行这个程序时,我输入用户名 as"dcole"和密码"test",但是当我输入它们时,它们返回"ÿûÿû ÿûÿû'ÿýÿûÿýdcole"and "ÿþÿþ ÿþÿþ'ÿü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
4

2 回答 2

0

也许您正在使用带有错误字符集的 BufferedReader。

这里,当您实例化新的 InputStreamReader 时,您可以定义字符集。

于 2012-04-07T03:45:59.303 回答
0

如果输入流是纯UTF-8,那么“dcole”和“test”就不太可能出现乱码。(如果您使用 Latin-1 或 ASCII 解码字节以及许多其他字符集,它们会很好。)您确实看到了预期的字符,但前面有额外的垃圾。

我怀疑客户端实际上是在用户名和密码之前加上了一些额外的字节。换句话说,它不是发送简单的文本——它是在一些你没有描述的协议中发送消息。

事实上,我认为这个 SO 问题可能会解释你的问题: 连接到我的程序时的奇怪行为

于 2012-04-07T04:23:08.510 回答