Frage

String encode = Base64.encodeBase64String("Hello".getBytes());
System.out.println(encode);
byte[] decode = Base64.decodeBase64(encode);
System.out.println(decode.toString());

Ich kann nicht sagen, was hier los ist. Ich habe jede mögliche Kombination ausprobiert, die es gibt. Setzen Sie das Charset, das ToString, kein Toststring. Die Enkodie funktioniert perfekt. Ich kann diese Zahl in einen Webdecoder werfen und jedes Mal den richtigen Wert erhalten. Ich kann das einfach nicht zum Laufen bringen.

Ausgabe:

 run:
SGVsbG8= (encode)

[B@1fb8ee3  (decode)

Ich kann es zum Laufen bringen, wenn ich eine für die Schleife verwende und die Zeichen manuell zu einer Zeichenfolge hinzufüge. Aber ich dachte, das Tostring habe das für mich getan?

War es hilfreich?

Lösung

Das unmittelbare Problem ist, wie Sie das Byte -Array in eine Zeichenfolge konvertieren.

Versuchen Sie es stattdessen:

System.out.println(new String(decode));

Jedoch, Es ist im Allgemeinen eine schlechte Idee, die Überlastungen von zu verwenden String.getBytes() oder new String(byte[]) die keine Zeichenkodierung angeben. Sie verwenden die Plattform -Standard -Codierung, was sofort bedeutet, dass Ihr Code nicht tragbar ist - oder zumindest Ihre Daten nicht. Ich schlage vor, Sie verwenden eine gemeinsame Codierung wie UTF-8.

Andere Tipps

toString() In einem Array tut nicht das, was Sie erwarten ... es ist nur der Standard toString() Implementierung von Object, was eine Zeichenfolge basierend auf dem HashCode des Objekts zurückgibt. Versuchen new String(decode).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top