Java BufferedReader返回奇怪的字符

时间:2012-04-07 03:42:43

标签: java character bufferedreader

当我运行此程序时,我输入的用户名为"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

2 个答案:

答案 0 :(得分:0)

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

查看here,当您实例化新的InputStreamReader时,您可以定义字符集。

答案 1 :(得分:0)

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

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

事实上,我认为这个SO问题可以解释您的问题:Odd Behavior when Connecting to my Program