You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:36