【发布时间】:2015-07-16 17:07:39
【问题描述】:
我正在扫描一些条形码并将它们解码为 Swift 字符串。特定的扫描器提供了一个对象,其中包含构建 NSData 所需的信息:
let rawData = decodedData.getData() // UnsafeMutablePointer<UInt8>
let rawDataSize = decodedData.getDataSize() // UInt32
let data = NSData(bytes: rawData, length: Int(rawDataSize)) // NSData
然后我把它解码成一个字符串:
let string = NSString(data: data, encoding: NSUTF8StringEncoding) as? String
我发现某些条形码在解码时返回 nil,除非我切换到 NSASCIIStringEncoding:
let string = NSString(data: data, encoding: NSASCIIStringEncoding) as? String
我对字符串编码的理解有限,但我的印象是任何 ASCII 字符串都可以解码为 UTF8,因为 ASCII 是 UTF8 的子集。这准确吗?
如果是这样,还有什么可能导致此问题?
【问题讨论】:
标签: utf-8 nsstring ascii nsdata barcode-scanner