我正在开发一个处理文本文件的应用程序。
在打开的对话框附件视图中,当用户选择一个文件时,我想要在NSPopUpButton上显示所选文件的支持编码,但到目前为止,我能找到的测试文件是否可以使用某种编码打开的唯一方法是实际尝试将其加载到NSString中。
现在,我对每种编码都这样做:
NSString *fileContents = [NSString stringWithContentsOfURL:selectedURL encoding:encoding error:nil];
if (fileContents)
{
/* Add encoding to the list of supported encodings */
}这会将整个文件加载到fileContents对象。
是否有可能只测试文件是否可以加载,而不实际加载?
发布于 2012-07-20 11:38:28
除非你阅读了所有的内容,否则这是不可能100%准确预测的。例如,许多编码是ASCII的超集,如果你在阅读文件的一半时停止阅读,你会被愚弄;也许第一段碰巧只包含ASCII,然后4个段落之后,文件突然包含了一堆数学公式。
一个很好的中间立场是支持用于指定已经存在的编码的约定。例如,像vim和emacs这样的文本编辑器为在文件的前几行中嵌入编码提示指定了特定的语法,并且HTML和XML文件可以包含带有编码信息的<meta>标记。如果您可以读取这些文件,则可以相当安全地假定它们是正确的,而不是读取整个文件;否则,您必须读取整个文件才能确定。
(一个例外:某些Unicode编码以字节顺序标记开头,而其他任何编码都没有使用这些标记,因此您可以假定它们就是它们所说的那样。)
https://stackoverflow.com/questions/11570856
复制相似问题