我做了电子邮件的base64 utf-8编码。 因为它是数据库密钥。 但是,会出现以下问题。 我需要帮助。
setValue at / user / aW1hZ2VfNTk1NkBuYXZlci5jb20 = 失败:DatabaseError:路径中的令牌无效
databaseReference.child("user").child(util.getBase64encode(email)).setValue(userModel)
帮帮我......
答案 0 :(得分:0)
在我的例子中,编码的字符串最后有一个新行。在此answer中使用@Arvin提到的Base64.NO_WRAP
作为解决方案。我的编码功能现在看起来像:
public static String encodeToBase64(String strToEncode) {
byte[] data = null;
try {
data = strToEncode.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return Base64.encodeToString(data, Base64.NO_WRAP);
}
如果你像@BobSnyder在上面的评论中提到的那样保持安全,你仍然可以使用URL_SAFE
并只修剪字符串以确保。