【发布时间】:2011-05-18 08:32:16
【问题描述】:
Android 中是否有用于字符串的 base-64 解码器和编码器?
【问题讨论】:
标签: java android base64 encoder decoder
Android 中是否有用于字符串的 base-64 解码器和编码器?
【问题讨论】:
标签: java android base64 encoder decoder
这似乎是在 API 版本 8 或 android 2.2 中添加的,因此它不会在旧平台上可用。
但它的来源是android/util/Base64.java,因此如果需要,可以将其原封不动地复制到旧版本中。
【讨论】:
Mw==\n。
这是一个如何使用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 活动中。
【讨论】:
Base64.DEFAULT 将在我的情况下插入换行符。我改用Base64.NO_WRAP。
这是我将要使用的一个简单方法,直到我意识到这仅在 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);
}
【讨论】:
如果您不想希望在字符串末尾有一个换行符,请将标志从 Base64.DEFAULT 更改为 Base64.NO_WRAP
Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
【讨论】:
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
【讨论】: