我在数据库中有一堆字符串,它们是一段时间前使用sun.misc.BASE64Encoder
编码的。
现在我想用java.util.Base64
来解码(和进一步编码其他字符串)。
这两者之间的区别在于Sun版本会在每n个字符处添加一个新行字符串。
示例:
Sun Base64: 54y49568uyj304j534w5y
34y0639j6yh93j5h0653j
s45hr68o
JDK8 Base64: 54y49568uyj304j534w5y34y0639j6yh93j5h0653js45hr68o
为了让JDK解码器能够解析这些压缩字符串,我需要删除换行符。
问题:
1. 我应该删除 \r\n (Unix) 还是 \n (Windows) 或者 \r (旧版Mac)? 因为这些字符串依赖于它们被编码的机器。 2. 如果我使用 zippedString.replaceAll("\r", "").replaceAll("\n", ""),如何确保实际字符串中没有 \r 字符,从而导致数据损坏? 3. 是否有其他方法可以在这两个机制之间创建桥梁?
\r\n
,因此您可以将它们删除(这取决于编码过程,例如,一个人可能会逐字编码或逐行编码),请参见 https://tools.ietf.org/html/rfc4648#section-4。 - user180100\r
或\n
- Thomas