Swift中如何使用RFC2045-MIME变体的Base64编码?
实现RFC2045-MIME变体的Base64编码(Swift)
嘿,这个问题我之前处理邮件相关编码时也碰到过!RFC2045定义的MIME Base64核心要求很明确:编码后的字符串每行最多76个字符,并且必须用CRLF(回车+换行,也就是\r\n)作为行分隔符——这正是你当前标准Base64编码缺失的关键部分。
你现在用的Data.Base64EncodingOptions(rawValue: UInt(0))是默认的无换行编码,自然不符合MIME规范。好在Swift已经内置了对应的配置选项,不用自己手动处理换行逻辑!
正确实现代码
直接使用.lineLength76Characters这个选项就可以满足RFC2045的要求——它会自动将编码后的字符串按每行76字符拆分,并且默认用CRLF作为行尾分隔符:
// 替换成你的实际test1和test2值 let test1 = "exampleUser" let test2 = "examplePass" let str = "\(test1):\(test2)" // 安全处理数据转换(避免强制解包崩溃) if let utf8Data = str.data(using: .utf8) { let mimeBase64String = utf8Data.base64EncodedString(options: .lineLength76Characters) print(mimeBase64String) // 输出就是符合RFC2045的MIME Base64编码 }
额外说明
如果你好奇细节,Swift的Data.Base64EncodingOptions里还有一个.endLineWithCarriageReturnLineFeed选项,但其实.lineLength76Characters已经默认包含了这个换行规则,所以单独设置前者就足够完成MIME标准的Base64编码了。
内容的提问来源于stack exchange,提问作者user869305
相关产品推荐
相关产品推荐

