我正在创建一个为用户订阅 FCM 主题的应用。在许多情况下,该主题的名称中都有特殊字符。因此,我将此主题名称转换为 Base64 字符串,如下所示:
byte[] data = myText.getText().toString().getBytes(StandardCharsets.UTF_8);
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
String converted = base64.replace("\n","");
在许多情况下,上述代码可以完美运行。但在某些情况下,base64 函数会生成如下字符串:“UHJvcHJpw6E=”。 FCM 主题名称中不允许使用等号符号。如何解决这个问题?
最佳答案
基于documentation NO_PADDING 标志应该可以解决问题。
int NO_PADDING Encoder flag bit to omit the padding '=' characters at the end of the output (if any).
String base64 = Base64.encodeToString(data, Base64.NO_PADDING);
为了更好地理解,请检查 Base64 documantation .
关于java - FCM 主题名称无效。 Base64 生成带有无效字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149837/