Cocoa touch 如何确定文件';IOS中的Unicode字符编码?
在我们的应用程序中,我必须打开一个文本文件,它将是总和时间UTF-8格式或UTF-16格式Cocoa touch 如何确定文件';IOS中的Unicode字符编码?,cocoa-touch,file-io,ios-simulator,Cocoa Touch,File Io,Ios Simulator,在我们的应用程序中,我必须打开一个文本文件,它将是总和时间UTF-8格式或UTF-16格式 有没有办法确定文件的文件格式?或者是否可以检查准备好的“NSString”是否有效?苹果的文档对如何继续提供了一些指导: 如果您被迫猜测编码(请注意,在没有明确信息的情况下,这是一种猜测): 请尝试stringWithContentsOfFile:usedEncoding:error:或initWithContentsOfFile:usedEncoding:error:(或基于URL的等效项)。这些方法尝
有没有办法确定文件的文件格式?或者是否可以检查准备好的“NSString”是否有效?苹果的文档对如何继续提供了一些指导: 如果您被迫猜测编码(请注意,在没有明确信息的情况下,这是一种猜测): 请尝试stringWithContentsOfFile:usedEncoding:error:或initWithContentsOfFile:usedEncoding:error:(或基于URL的等效项)。这些方法尝试确定资源的编码,如果成功,则通过引用返回所使用的编码 如果(1)失败,请尝试通过指定UTF-8作为编码来读取资源 如果(2)失败,请尝试适当的旧编码。这里的“适当”取决于环境;它可能是默认的C字符串编码,也可能是ISO或Windows Latin 1,或者其他,这取决于数据的来源
如果您被迫猜测文本文件的编码(适用于Swift 4.0),则可以使用文档中所述的以下do catch块:
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
}
}
}
添加带有答案链接的注释,而不是将其复制粘贴为自己的注释。很抱歉,下次我会的