1

当您使用这样的方法保存 NSString(或 Swift.String)时,它会写入 xattr“com.apple.TextEncoding”。当您使用相应的方法之一重新加载它时,它会检查此 xattr 并将其用作默认编码。

是否有任何 API 可以根据此 xattr 确定文件的编码,而无需加载文件的内容?

我知道解析“IANA 名称,分号,CFString​Encoding uint32,(可选的其他东西)”并不难,但如果有内置方法,我宁愿避免它。

4

1 回答 1

-1

如果我正确理解了您的问题,那么您是在寻求一种读取“com.apple.TextEncoding”扩展文件属性值的方法。这可以通过在<sys/xattr.h>.

这是一篇URL扩展属性功能的帖子: 编写扩展文件属性快速示例

示例用法:

func getTextEncodingAttribute(for url: URL) -> String? {
    do {
        let data = try url.extendedAttribute(forName: "com.apple.TextEncoding")
        return String(data: data, encoding: .utf8)
    } catch _ {
    }
    return nil
}
于 2017-08-31T19:57:37.593 回答