Есть ли декодер и кодировщик base-64 для строки в 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.
// 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