Diese müssen Sie importieren import android.util.Base64; und dann verwenden können Base64.encodeToString & Base64.decode nach Ihren Bedürfnissen
– Zohab Ali
8. Dezember 2018 um 10:10 Uhr
Jon Skeet
Zuerst:
Wählen Sie eine Codierung. UTF-8 ist im Allgemeinen eine gute Wahl; Halten Sie sich an eine Verschlüsselung, die auf jeden Fall auf beiden Seiten gültig ist. Es wäre selten, etwas anderes als UTF-8 oder UTF-16 zu verwenden.
Sendeende:
Codieren Sie die Zeichenfolge in Bytes (z text.getBytes(encodingName))
Codieren Sie die Bytes mithilfe von base64 Base64 Klasse
Übertragen Sie die base64
Empfangsende:
Erhalten Sie die base64
Decodieren Sie base64 mithilfe von in Bytes Base64 Klasse
Decodieren Sie die Bytes in eine Zeichenfolge (z new String(bytes, encodingName))
Also sowas wie:
// Sending side
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");
Oder mit StandardCharsets:
// Sending side
byte[] data = text.getBytes(StandardCharsets.UTF_8);
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, StandardCharsets.UTF_8);
@max: “Es funktioniert nicht” ist nie eine gute Beschreibung dessen, was passiert. Werde meinen Beitrag aber editieren.
– Jon Skeet
9. September 2011 um 12:23 Uhr
Beachten Sie auch, dass Sie statische Methoden nicht so aufrufen sollten, als wären sie Instanzmethoden …
– Jon Skeet
9. September 2011 um 12:25 Uhr
Wenn Sie es so ausdrücken, funktioniert es. String base64 = Base64.encodeToString (data, Base64.NO_WRAP);
– Freude
8. Oktober 2013 um 14:20 Uhr
@portfoliobuilder: Absolut nicht. UTF-8 ist garantiert eine gültige Kodierung in Java: siehe docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html. Zugegeben, heutzutage würde ich angeben StandardCharsets.UTF_8 stattdessen. Ich habe die Antwort aktualisiert, um anzugeben, dass Sie sich auf das Vorhandensein des Zeichensatzes verlassen sollten, aber ich würde es ziemlich tun stets Verwenden Sie UTF-8.
– Jon Skeet
3. Januar 2017 um 18:37 Uhr
Wenn ich Base64.DEFAULT verwende, sagt es schlechtes base64. Verwenden Sie also Base64.URL_SAFE und genießen Sie
– Android-Hilfe
12. Mai 2017 um 7:26 Uhr
Zum Kotlin mb besser, dies zu verwenden:
fun String.decode(): String {
return Base64.decode(this, Base64.DEFAULT).toString(charset("UTF-8"))
}
fun String.encode(): String {
return Base64.encodeToString(this.toByteArray(charset("UTF-8")), Base64.DEFAULT)
}
Die Benennung dieser Erweiterungsfunktionen ist schrecklich. Ich würde wärmstens empfehlen, encodeToBase64 oder etwas Ähnliches zu verwenden.
– Rolf ツ
14. November 2018 um 10:59 Uhr
Sie sind absolut nicht klar und offensichtlich. Sag mir: Was bedeutet “dekodieren” oder “kodieren”? Es gibt Tausende von Dekodierungs-/Kodierungsalgorithmen … Was ist, wenn Sie Base64 und Hex benötigen? Wie würden Sie die Methoden dann benennen?
– Rolf ツ
15. November 2018 um 11:25 Uhr
Trotzdem würde ich so etwas bevorzugen wie: ‘toBase64()’ und ‘fromBase64()’ als Minimum. Auf diese Weise muss ich keine Dokumentation lesen, um zu wissen, was die Methode tun wird. Denken Sie daran: “Code wird mehr gelesen als geschrieben”.
– Rolf ツ
15. November 2018 um 11:30 Uhr
Ja, wenn ich Codierung und Algorithmus hervorheben möchte, werde ich es wie toBase64UTF8 () nennen, aber ich brauche es nicht, einfach ist besser. Namensgebung ist eines der Hauptprobleme in der Entwicklung. Bitte stimmen Sie bei dieser Antwort ab und wir schließen diese Diskussion, danke.
– brunql
15. November 2018 um 11:39 Uhr
So viel Aufhebens um ein Beispiel 🙂
– Simas
15. November 2018 um 20:04 Uhr
Dunfield
An alle anderen, die hier gelandet sind, als sie nach Informationen darüber gesucht haben, wie man eine mit codierte Zeichenfolge decodiert Base64.encodeBytes()hier war meine Lösung:
Ihre Antwort impliziert, dass das Codieren von Passwörtern in base64 eine gute Praxis ist. Tatsächlich ist es NICHT so, wie es jeder einfach entschlüsseln kann.
byte[] decrypt= Base64.decode(base64, Base64.DEFAULT);
String text = new String(decrypt, "UTF-8");
Ihre Antwort impliziert, dass das Codieren von Passwörtern in base64 eine gute Praxis ist. Tatsächlich ist es NICHT so, wie es jeder einfach entschlüsseln kann.
– Jan Heinrich Reimer
9. Juni 2016 um 17:41 Uhr
Ramesh R
Über vielen Antworten, die für mich nicht funktionieren, und einige von ihnen sind keine Ausnahmebehandlung auf die richtige Weise. Hier füge ich eine perfekte Lösung hinzu, die für mich, sicher auch für Sie, erstaunlich funktioniert.
//base64 decode string
String s = "ewoic2VydmVyIjoic2cuenhjLmx1IiwKInNuaSI6InRlc3RpbmciLAoidXNlcm5hbWUiOiJ0ZXN0
ZXIiLAoicGFzc3dvcmQiOiJ0ZXN0ZXIiLAoicG9ydCI6IjQ0MyIKfQ==";
String val = a(s) ;
Toast.makeText(this, ""+val, Toast.LENGTH_SHORT).show();
public static String a(String str) {
try {
return new String(Base64.decode(str, 0), "UTF-8");
} catch (UnsupportedEncodingException | IllegalArgumentException unused) {
return "This is not a base64 data";
}
}
14220800cookie-checkWeiß jemand, wie man eine Zeichenfolge in Base64 mit Base64 decodiert und codiert?yes
Diese müssen Sie importieren
import android.util.Base64;
und dann verwenden könnenBase64.encodeToString
&Base64.decode
nach Ihren Bedürfnissen– Zohab Ali
8. Dezember 2018 um 10:10 Uhr