Java Base64 Sun到JDK8

GGr*_*rec 3 java base64 encoding sun java-8

我在数据库中有一堆用sun.misc.BASE64Encodera 编码的字符串。

现在,我想使用解码(并编码其他字符串)java.util.Base64

两者的区别在于,Sun的每n个字符添加了一个新行字符串

例:

Sun Base64:   54y49568uyj304j534w5y
              34y0639j6yh93j5h0653j
              s45hr68o

JDK8 Base64:  54y49568uyj304j534w5y34y0639j6yh93j5h0653js45hr68o
Run Code Online (Sandbox Code Playgroud)

为了让JDK解码器解析这些压缩的字符串,我需要删除新的行字符。

问题:

  1. 我是否要删除\r\n(Unix)或\n(Windows)或\r(旧的Mac)?因为字符串取决于对它们进行编码的机器

  2. 如果我说我zippedString.replaceAll("\r", "").replaceAll("\n", "")该如何确保我\r的实际字符串中没有小写字母,从而导致数据损坏?

  3. 还有其他方法可以在这两种机制之间建立桥梁吗?

Pet*_*rey 5

Base64中没有空格,因此我将全部删除。

String toDecode = str.replaceAll("\\s+", "");
Run Code Online (Sandbox Code Playgroud)

这消除了关于如何处理特定换行符或空格的任何歧义。