gpt4 book ai didi

ios - 使用 NSUTF8StringEncoding 将 NSData 转换为 NSString 对于特殊字符不起作用

转载 作者:行者123 更新时间:2023-11-29 01:12:27 25 4
gpt4 key购买 nike

我想解析一个 CSV 文件以创建一个字符串。

我使用 Dropbox API 获取数据。假设我的 CSV 文件包含一个简单的词:“école”。当我尝试创建一个字符串时,出现错误:fatal error: expectedly found nil while unwrapping an Optional value

我的代码:

client.files.download(path: "/\(selectedFile)", destination: destination).response { response, error in
if let (_, url) = response {
let data = NSData(contentsOfURL: url)

print("data: \(data!)")

let myString = NSString(data: data!, encoding: NSUTF8StringEncoding) as! String

let csv = CSwiftV(String: myString)
} else {
print(error!)
}
}

print("data:\(data!)") 效果很好,它打印了一堆十六进制数。所以我知道我的数据不是零(对吧?)。

如果我的 CSV 文件包含单词“ecole”而不是“école”,它就可以正常工作。但据我所知,UTF-8编码应该支持特殊字符吧?

最佳答案

这意味着您的数据是用其他代码编码的,而不是 NSUTF8StringEncoding 使用相同的编码对其进行解码例如

let string = "école"
let data = string.dataUsingEncoding(NSUTF8StringEncoding)
let myString = NSString(data: data!, encoding: NSUTF8StringEncoding) as! String //This is OK

let string = "école"
let data = string.dataUsingEncoding(NSUnicodeStringEncoding)
let myString = NSString(data: data!, encoding: NSUTF8StringEncoding) as! String // This will not work and myString will be nil

即使您确定那里有数据,也请尽量避免强制展开(!),因为下次使用时可能会发生崩溃!

我会这样做:

 guard let data = NSData(contentsOfURL: url),
let myString = NSString(data: data, encoding: NSUTF8StringEncoding) else {
print("something terrible happened treat error")
}
let csv = CSwiftV(String: String(myString))

关于ios - 使用 NSUTF8StringEncoding 将 NSData 转换为 NSString 对于特殊字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35579758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com