0

我正在处理一个处理文本文件的应用程序。是否有可能测试一个文本文件是否可以在不实际加载的情况下使用NSStringEncoding进行加载?

在打开的对话框附件视图中,当用户选择一个文件时,我想在NSPopUpButton上显示所选文件的受支持编码,但到目前为止我只能找到测试文件是否可以打开的文件某种编码实际上是试图将其加载到NSString中。

现在我这样做是对每一种编码:

NSString *fileContents = [NSString stringWithContentsOfURL:selectedURL encoding:encoding error:nil]; 

if (fileContents) 
{ 
    /* Add encoding to the list of supported encodings */ 
} 

这会将整个文件到fileContents对象。

是否有可能只测试该文件是否可以在没有实际加载的情况下加载?

回答

1

除非您阅读所有内容,否则无法以100%的准确度进行预测。例如,许多编码都是ASCII的超集,如果您通过文件中途停止阅读,您会被愚弄;也许第一段发生只包含ASCII,然后4段后面的文件突然包含一堆数学方程。

良好的中间立场是支持约定指定已存在的编码。例如,vimemacs等文本编辑器指定了在文件的前几行中嵌入编码提示的特定语法,HTML和XML文件可以包含带编码信息的<meta>标签。如果你可以阅读这些文件,假设它们是正确的并且不读取整个文件是相当安全的;否则,你必须阅读整个文件才能确定。

(一个例外:某些Unicode编码以字节顺序标记开始,其他编码没有使用,因此您可以假设这些标记是他们所说的)。

相关问题