2012-04-07 7 views
2

Когда я запускаю эту программу, я ввожу имя пользователя как "dcole" и пароль "test", но когда я ввожу их, они возвращаются с "ÿûÿû ÿûÿû'ÿýÿûÿýdcole" и "ÿþÿþ ÿþÿþ'ÿütest". Вот код:Java BufferedReader возвращает странные символы

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

Где вы создать свой 'BufferedReader'? – Jeffrey

ответ

0

Может быть, вы используете BufferedReader с неправильной кодировкой.

Посмотрите на here, когда вы экземпляр new InputStreamReader вы можете определить кодировку.

+0

Теперь он приходит с «Клиент, связанный с IP/127.0.0.1 Клиент /127.0.0.1 вошел в систему как ???? ???? '?????? dcole test " – cheese5505

+0

Вам необходимо установить правая кодировка для потока ввода и выходного потока. Если вы установите правильную кодировку на выходе, вам не нужно это делать ». Пожалуйста, введите свое имя пользователя: .getBytes (« UTF-8 »). – dash1e

+0

Это мои буферизированные читатели: '\t \t \t \t BufferedReader clientinput = new BufferedReader (новый InputStreamReader (client.getInputStream()," UTF8 ")); \t \t \t \t BufferedOutputStream clientoutput = новый BufferedOutputStream (client.getOutputStream()); ' – cheese5505

0

Если входной поток был чистым UTF-8, то «dcole» и «test» вряд ли будут искажены. (Было бы хорошо, если бы вы использовали Latin-1 или ASCII для декодирования байтов и многих других кодировок.) Действительно, вы видите ожидаемых персонажей, но с лишним мусором перед ним.

Я подозреваю, что клиент фактически предшествует имени пользователя и паролю с дополнительными байтами. Другими словами, он не отправляет простой текст - он отправляет сообщения в некотором протоколе, который вы не описали.

На самом деле, я думаю, что это так, вопрос мог бы объяснить вашу проблему: Odd Behavior when Connecting to my Program

Смежные вопросы