2

在我们的应用程序中,我必须打开一个文本文件,该文件将是 UTF-8 格式或 UTF-16 格式的总和。

有没有办法确定文件的文件格式?或者是否可以检查准备好的“NSString”是否有效?

4

2 回答 2

0

Apple 的文档对如何继续进行了一些指导:字符串编程指南:使用未知编码读取数据

如果您被迫猜测编码(并注意在没有明确信息的情况下,这是猜测):

尝试 stringWithContentsOfFile:usedEncoding:error: 或 initWithContentsOfFile:usedEncoding:error: (或基于 URL 的等效项)。这些方法尝试确定资源的编码,如果成功则通过引用返回使用的编码。

如果 (1) 失败,请尝试通过指定 UTF-8 作为编码来读取资源。

如果 (2) 失败,请尝试适当的传统编码。这里的“适当”取决于具体情况;它可能是默认的 C 字符串编码,可能是 ISO 或 Windows Latin 1,或者其他,取决于您的数据来自哪里。

于 2013-08-01T08:31:58.517 回答
0

如果您被迫猜测文本文件的编码,您可以使用文档中所述的以下 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
        }
    }
}
于 2021-06-04T18:10:20.053 回答