【问题标题】:NSData encodingNSData 编码
【发布时间】:2015-03-07 20:13:20
【问题描述】:

目前,我正在尝试在我的 iOS 应用程序中解析 NSData。问题是,我似乎找不到合适的希伯来语编码进行解析。我必须使用Windows-1255 编码(Windows 的希伯来编码类型)或ISO 8859-8 编码对数据进行解码,否则我会得到纯乱码。我最接近解决问题的方法是使用

CFStringConvertEncodingToNSStringEncoding(CFStringEncodings.ISOLatinHebrew)

但它会抛出 'CFStringEncodings' is not convertible to 'CFStringEncoding'(注意 Encodings 与 Encoding)。

如何才能正确编码数据?

谢谢!

【问题讨论】:

    标签: swift nsstringencoding cfstring


    【解决方案1】:

    问题是CFStringEncodings是一个基于CFIndex的枚举 (这又是Int 的类型别名),而CFStringEncoding 是一个类型 UInt32 的别名。因此,您必须转换 .ISOLatinHebrew 明确地将值设置为 CFStringEncoding:

    let cfEnc = CFStringEncodings.ISOLatinHebrew
    let enc = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(cfEnc.rawValue))
    

    【讨论】:

      【解决方案2】:

      原来我需要弄脏我的手。 我看到CFStringEncodings 与文件CFStringEncodingsExt.h 有关系,所以我搜索了文件以寻求帮助。突然间,我发现了一个巨大的CF_ENUM,其中包含了我所需要的——所有CFStringEncodings 的UInt32 值!

      原来kCFStringEncodingISOLatinHebrew = 0x0208, /* ISO 8859-8 */

      我鼓励所有面临此编码问题的人转到该文件并搜索他需要的编码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-13
        • 2017-09-15
        • 1970-01-01
        • 2010-11-23
        • 2019-12-27
        • 1970-01-01
        相关资源
        最近更新 更多