我正在使用 Base64.encodeBytes 通过签名数据进行编码,但它会在生成的字符串中添加换行符(每 76 个字符)。我发现有一个选项可以通过DONT_BREAK_LINES
以避免换行符。
但是这个领域的描述说 /** Don't break lines when encoding (violates strict Base64 specification) */
有人可以解释一下,为什么使用此选项违反 Base64 规范?
我正在使用 Base64.encodeBytes 通过签名数据进行编码,但它会在生成的字符串中添加换行符(每 76 个字符)。我发现有一个选项可以通过DONT_BREAK_LINES
以避免换行符。
但是这个领域的描述说 /** Don't break lines when encoding (violates strict Base64 specification) */
有人可以解释一下,为什么使用此选项违反 Base64 规范?
Base64 一词源自MIME 内容传输编码。
定义这一点的 RFC 的最新版本在这里,RFC 5322。
它说:
2.1.1。行长限制 该规范对数量有两个限制 一行中的字符。每行字符必须不超过 998 个字符,并且应该不超过 78 个字符,不包括 CRLF。
而且由于 CR 和 LF 都是一个字符,因此剩下 76 个字符用于行。
TBH 它只是违反了文本的建议,实际上没有人关心。如果您的行长超过 996 个字符,那么您将违反.. 并且可能没有人会在意。