V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
FaiChou
V2EX  ›  程序员

这段数据是用什么字符集编码的? 在 Swift 中用 base64 解码怎么解都是 nil

  •  
  •   FaiChou ·
    FaiChou · 2022-12-08 22:10:42 +08:00 · 740 次点击
    这是一个创建于 750 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据中包含隐私信息, 所以先放个截图.

    img1

    https://www.base64decode.org/ 中将数据放进去, 选择 AUTO-DETECT 是可以正确解码, 除此之外所有的选项都试过, 都不能正确解码, 有些中文会乱码, 有些则直接将中文变为空.

    img2

    将正确解码后的数据再使用 CP936 字符集编码, 最接近原来的数据, 但还不完全一样.

    使用 js 等工具可以正常解码, atob -> escape -> encodeURIComponent.

    但在 Swift 中尝试了好多方法都不能正常解码, 全部都是 nil:

    extension String {
        func base64DecodedUsingSJIS() -> String? {
            if let data = Data(base64Encoded: self) {
                let decodedString = String(data: data, encoding: .init(rawValue: CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(CFStringEncodings.shiftJIS.rawValue))))
                return decodedString
            }
            return nil
        }
        func base64Decoded() -> String? {
            guard let data = Data(base64Encoded: self) else { return nil }
            return String(data: data, encoding: .utf8)
        }
        func base64DecodedASCII() -> String? {
            guard let data = Data(base64Encoded: self) else { return nil }
            return String(data: data, encoding: .ascii)
        }
    }
    
    codehz
        1
    codehz  
       2022-12-08 22:15:41 +08:00
    eyJ 一看就是 json 开头的{"啦,结合斜杠特征,那就是 jwt 啦
    Tanix2
        2
    Tanix2  
       2022-12-08 22:29:17 +08:00   ❤️ 1
    试试这个网站能检测出来不: https://base64.guru/tools/character-encoding
    wdlth
        3
    wdlth  
       2022-12-08 22:34:55 +08:00
    https://cryptii.com/
    你可以用这个网站解码,选 Bytes ,可以看到 16 进制值,这样可以更方便的辨别。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   950 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:11 · PVG 05:11 · LAX 13:11 · JFK 16:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.