如何在不编码的情况下将文件读入NSSrting?

时间:2016-08-14 06:33:42

标签: cocoa text encoding nsstring

我有一些带有重音字符的文本文件,但我不知道编码,我希望文本在NSTextField中按原样显示。

我可以使用[NSString stringWithContentsOfFile:]但不推荐使用此方法。所有其他方法都要求用户提供文本编码。我不想使用任何试图猜测编码的方法,因为:1。它们不会一直工作,2。我真的只想以NSTextField的方式显示文件的内容

那我该怎么办?

2 个答案:

答案 0 :(得分:2)

  

我真的只想以NSTextField中的方式显示文件的内容。

你问的是不可能的,“它的方式”取决于的编码。该文件包含一系列字节,这些字节只是8个0和0的字符串。 1分的。你必须解释那些位串。您可以一次取四个并将它们解释为32位整数,或32位浮点数或UTF32 - 每次都会得到不同的结果。或者你可以一次一个地把它们解释为ASCII,UTF,EBCDIC等等 - 你会得到不同的结果。

最接近“它的方式”是将字节转储为二进制,八进制或十六进制 - 即od命令行命令将为您执行的操作。您可以尝试弄明白,例如正如file命令所做的那样,或者您需要知道。 (另见this question。)

答案 1 :(得分:-1)

我最终使用了:

[NSString stringWithContentsOfFile:filePath encoding:[NSString defaultCStringEncoding] error:nil]

这给我的结果与[NSString stringWithContentsOfFile:]

相同