Есть ли декодер base-64 и кодировщик для String в Android?
Кодировщик и декодер Base64
Ответ 1
Похоже, что это было добавлено в API версии 8 или Android 2.2, поэтому оно не будет доступно на старых платформах.
Но его источник находится в android/util/Base64.java
, поэтому при необходимости можно просто скопировать его без изменений для более старых версий.
Ответ 2
Это пример использования класса Base64
для кодирования и декодирования простого значения String.
// 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.
Ответ 3
Для кодирования:
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
Ответ 4
Вот простой метод, который я собирался использовать, пока не понял, что он поддерживается только в 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);
}
Ответ 5
Если вы не хотите разрыв строки в конце строки, измените флаги от Base64.DEFAULT
до Base64.NO_WRAP
Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
Ответ 6
base64 decode это может помочь всем нам.