在我们的应用程序中,我必须打开一个文本文件,该文件将是 UTF-8 格式或 UTF-16 格式的总和。
有没有办法确定文件的文件格式?或者是否可以检查准备好的“NSString”是否有效?
在我们的应用程序中,我必须打开一个文本文件,该文件将是 UTF-8 格式或 UTF-16 格式的总和。
有没有办法确定文件的文件格式?或者是否可以检查准备好的“NSString”是否有效?
Apple 的文档对如何继续进行了一些指导:字符串编程指南:使用未知编码读取数据:
如果您被迫猜测编码(并注意在没有明确信息的情况下,这是猜测):
尝试 stringWithContentsOfFile:usedEncoding:error: 或 initWithContentsOfFile:usedEncoding:error: (或基于 URL 的等效项)。这些方法尝试确定资源的编码,如果成功则通过引用返回使用的编码。
如果 (1) 失败,请尝试通过指定 UTF-8 作为编码来读取资源。
如果 (2) 失败,请尝试适当的传统编码。这里的“适当”取决于具体情况;它可能是默认的 C 字符串编码,可能是 ISO 或 Windows Latin 1,或者其他,取决于您的数据来自哪里。
如果您被迫猜测文本文件的编码,您可以使用文档中所述的以下 do-catch 块,这适用于 Swift 4.0:
do {
let str = try String(contentsOf: url, usedEncoding: &encodingType)
print("Used for encoding: \(encodingType)")
} catch {
do {
let str = try String(contentsOf: url, encoding: .utf8)
print("Used for encoding: UTF-8")
} catch {
do {
let str = try String(contentsOf: url, encoding: .isoLatin1)
print("Used for encoding: Windows Latin 1")
} catch {
// Error handling
}
}
}