Има ли декодер base-64 и енкодер за String в Android?
Base64 енкодер и декодер
Отговори (5)
Вижте android.util.Base64
Изглежда, че това е добавено в API версия 8 или android 2.2, така че няма да е налично на по-старите платформи.
Но източникът му е на android/util/Base64.java
така че ако е необходимо, човек може просто да го копира непроменен за по-стари версии.
person
Dan D.
schedule
01.12.2010
кодиран Base64 на Mw== е TXc9PQ== Но този изходен код показва TXc9PQo= Какво не е наред?! :-о
- person Dr.jacky; 01.08.2014
@Mr.Hyde Имате нов ред в края. TXc9PQo= декодира до
Mw==\n
.
- person Dan D.; 02.08.2014
Да, и за да го разрешим, трябва да използваме Base64.NO_WRAP за флаг във функцията encodeToString, вместо Base64.DEFAULT.
- person Dr.jacky; 02.08.2014
здравейте, имам Base64.class, но има грешка $assertionsDisabled не може да бъде преобразувана в променлива
- person Prasad; 13.09.2014
Това е пример за това как да използвате класа Base64
за кодиране и декодиране на проста стойност на низ.
// String to be encoded with Base64
String text = "Test";
// Sending side
byte[] data = null;
try {
data = text.getBytes("UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
// Receiving side
byte[] data1 = Base64.decode(base64, Base64.DEFAULT);
String text1 = null;
try {
text1 = new String(data1, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Този откъс може да бъде включен в дейност на Android.
person
blackpanther
schedule
22.08.2012
използването на
Base64.DEFAULT
ще вмъкне нов ред в моя случай. Вместо това използвам Base64.NO_WRAP
.
- person Arvin; 18.12.2013
Единственият, който работи за мен с 2 байта символи.
- person Jerry; 03.07.2018
Ето един прост метод, който щях да използвам, докато разбрах, че това се поддържа само в Android API 8+:
// Has line break
public String getBase64(String input) {
return Base64.encodeToString(input.getBytes(), Base64.DEFAULT);
}
// No line break
public String getBase64(String input) {
return Base64.encodeToString(input.getBytes(), Base64.NO_WRAP);
}
person
Jared Burrows
schedule
26.08.2012
както @arvin коментира по-горе: използването на Base64.DEFAULT ще вмъкне нов ред в моя случай. Вместо това използвам Base64.NO_WRAP.
- person AbdulMomen عبدالمؤمن; 30.06.2015
За кодиране:
private String encodeString(String s) {
byte[] data = new byte[0];
try {
data = s.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} finally {
String base64Encoded = Base64.encodeToString(data, Base64.DEFAULT);
return base64Encoded;
}
}
За декодиране:
private String decodeString(String encoded) {
byte[] dataDec = Base64.decode(encoded, Base64.DEFAULT);
String decodedString = "";
try {
decodedString = new String(dataDec, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} finally {
return decodedString;
}
}
Пример
String text = "example007";
Log.e("encoded", encodeString(text)); //Output: ZXhhbXBsZTAwNw==
Log.e("decoded", decodeString(encodeString(text))); //Output: example007
person
CommonSenseCode
schedule
23.12.2015
Ако не искате прекъсване на ред в края на низа, променете флаговете от Base64.DEFAULT
на Base64.NO_WRAP
Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
person
Hugo Gresse
schedule
07.05.2015