【发布时间】:2018-11-17 07:32:33
【问题描述】:
我正在从服务器获取 base64 字符串,如下所示
eyJhY3IiOjIsInN1YiI6IjNmZDFhNzQwLWJjZTItMTAzNS04NDUxLWVkODRlMTM4MmFhMiIsImF1ZCI6IjZjZjY3M2ZkLTlkODEtNDU5OS04MGJkLWM5ODRiMmNiZDQ2NSIsIm...
我试图用下面的代码(作为字符串扩展)来决定这个字符串
//: ### Base64 decoding a string
func base64Decoded() -> String? {
guard let data = Data(base64Encoded: self) else { return nil }
return String(data: data, encoding: .utf8)
}
但它会重新调整为零。
也尝试使用以下代码(来自GIT)
guard let plainData = (serverString as NSString).dataUsingEncoding(NSUTF8StringEncoding) else {
fatalError()
}
let base64String = plainData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
print(base64String) // Zm9v
// Decoding
if let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0)),
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding) {
print(decodedString) // foo
}
但是,我仍然无法读取来自服务器的 Base64 字符串。请提出我在解码来自服务器的字符串时做错了什么。
【问题讨论】:
-
也许这是stackoverflow.com/q/29152706/1187415 ? Base64字符串的长度是4的倍数吗?
-
试试
Data(base64Encoded: self, options: .ignoreUnknownCharacters) -
this 对您的问题有帮助吗?
-
@MartinR 谢谢,它有帮助。长度不是 4 的倍数,