如何解决Swift base64 解码非字母和非 utf-8 字符串
是否可以使用包含非 utf8 编码字符串的 Swift 语言 base64 编码字符串(即 Windows-1252 或 ISO-8859-1)正确解码?
可以在 stackoverflow 上找到的每个代码片段都失败并返回 nil。
例如
let decodedData = NSData(base64EncodedString: base64String,options:NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
给出空,因为它忽略坏字符,如果我不使用这个选项,它会像许多其他 gist 代码一样给出 nil
这是包含我需要解码的部分加密密钥的测试 base64 字符串。如果我使用 Python、PHP 或 Java 等其他语言,它可以正确解码,但使用 Swift 则无法做到。
FkXKDAAAAAAAAAAAvMBAYFk1JADmiwHAz+rNFy93faklHL7MW3Hhlf1Bo7/hpZ3j1GmdySyIpJ4YlRH65mleumYqsgUgYLlQY/jQq2YykMPUwZQ4jTgU7Q==
应该是 EʼÀ@`Y5$æ‹ÀÏêÍ/w}©%¾Ì[qá•ýA£¿á¥ãÔiÉ,ˆ¤ž•úæi^ºf*² `¹PcøЫf2ÃÔÁ”88í
因为它可以用这样的在线工具解码
这是另一个:
FgdhDAAAAAAABwAAOJAiYMxlJQAMbwHAWrYq59+po4WdMS4R+EHV4hBKzWn8oZYpTFdFQ33usZUa19d+umkWcL2g4mmVeUOwUG2dZGWIrxlTWJA+s/RTTQ==
请告知是否有任何方法可以在 iOS 设备上本地解码这样的 base64 字符串,或者我真的需要将其发送到服务器才能做到这一点?
解决方法
你正在寻找一个相当古老的例子。语法改为:
let decodedData = Data(base64Encoded: base64String)
我已经用您的示例进行了测试,它们运行良好。请记住,输出是原始数据,这不是任何编码(Windows-1252 或 ISO-8859-1 等)中的字符串。它只是一个随机字节序列,这就是它的预期。您使用的在线工具只是试图将其解码为 ISO-8859-1,但这是胡言乱语,实际上在您显示的输出中已损坏。它不显示第一个字节(0x16,不可打印)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。