在 iOS 中,在使用 base64 时,我们经常这样使用:
// data 是 NSData 类型
[data base64EncodedStringWithOptions:0];
typedef NS_OPTIONS(NSUInteger, NSDataBase64EncodingOptions) {
// Use zero or one of the following to control the maximum line length after which a line ending is inserted. No line endings are inserted by default.
NSDataBase64Encoding64CharacterLineLength = 1UL << 0,
NSDataBase64Encoding76CharacterLineLength = 1UL << 1,
// Use zero or more of the following to specify which kind of line ending is inserted. The default line ending is CR LF.
NSDataBase64EncodingEndLineWithCarriageReturn = 1UL << 4,
NSDataBase64EncodingEndLineWithLineFeed = 1UL << 5,
}
默认情况下,不插入行结束符。
By default, no line endings are inserted.
如果你指定了其中一个行长度选项(NSDataBase64Encoding64CharacterLineLength或NSDataBase64Encoding76CharacterLineLength),但没有指定要插入的行结束符的类型,默认的行结束符是回车+换行。
If you specify one of the line length options (NSDataBase64Encoding64CharacterLineLength or NSDataBase64Encoding76CharacterLineLength) but don’t specify the kind of line ending to insert, the default line ending is Carriage Return + Line Feed.
- NSDataBase64Encoding64CharacterLineLength
设置最大的行长度为64个字符,之后插入行结束符。
Set the maximum line length to 64 characters, after which a line ending is inserted.
- NSDataBase64Encoding76CharacterLineLength
将最大行长设置为76个字符,之后插入行结束符。
Set the maximum line length to 76 characters, after which a line ending is inserted.
- NSDataBase64EncodingEndLineWithCarriageReturn
当设置了最大行长时,指定要插入的行结尾应包含回车。
When a maximum line length is set, specify that the line ending to insert should include a carriage return.
- NSDataBase64EncodingEndLineWithLineFeed
当设置了最大行长时,指定要插入的行结尾应该包含换行符。
When a maximum line length is set, specify that the line ending to insert should include a line feed.
从维基上看,base64 有多个规范,可以很容易看出 NSDataBase64Encoding64CharacterLineLength 符合 RFC 1421
但是 iOS 开发中绝大多数时候,都没有指定 base64 类型,而是传了一个0,使用系统默认
// data 是 NSData 类型
[data base64EncodedStringWithOptions:0];
而对于默认base64的行为,苹果的开发文档里只有一句话:
默认情况下,不插入行结束符。
但这可以从苹果的《AppStore 收据验证编程指南》考证,iOS 里默认 base64 规范符合:RFC 4648。
和 Go 语言 base64 默认的标准一致。
参考: