2 Stimmen

Java BufferedReader gibt seltsame Zeichen zurück

Wenn ich dieses Programm ausführe, gebe ich den Benutzernamen als "dcole" und das Kennwort "test" aber wenn ich sie eingebe, kommen sie zurück mit "ÿûÿû ÿûÿû'ÿýÿûÿýdcole" y "ÿþÿþ ÿþÿþ'ÿütest" . Hier ist der Code:

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);

Konsole:

Client connected with the IP /127.0.0.1
Client /127.0.0.1 logged in as ÿûÿû ÿûÿû'ÿýÿûÿýdcole ÿþÿþ ÿþÿþ'ÿütest

0voto

dash1e Punkte 7591

Vielleicht verwenden Sie einen BufferedReader mit einem falschen Zeichensatz.

Blick auf aquí Wenn Sie einen neuen InputStreamReader instanzieren, können Sie den Zeichensatz definieren.

0voto

Stephen C Punkte 665668

Wenn der Eingabestrom reines UTF-8 wäre, würden "dcole" und "test" wahrscheinlich nicht verstümmelt werden. (Sie wären in Ordnung, wenn Sie Latin-1 oder ASCII zum Dekodieren der Bytes verwenden würden, und viele andere Zeichensätze ebenfalls.) In der Tat sehen Sie die erwarteten Zeichen, aber mit zusätzlichem Unsinn davor.

Ich vermute, dass der Client dem Benutzernamen und dem Kennwort ein paar zusätzliche Bytes voranstellt. Mit anderen Worten, er sendet keinen einfachen Text, sondern Nachrichten in einem Protokoll, das Sie nicht beschrieben haben.

Ich glaube sogar, dass diese SO-Frage Ihr Problem erklären könnte: Seltsames Verhalten beim Verbinden mit meinem Programm

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X