【问题标题】: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 */
我鼓励所有面临此编码问题的人转到该文件并搜索他需要的编码。