2011-05-23 82 views
2

我正在解析C中的文件字节流,并通过回调将结果组织到Objective-C世界中的NSDictionary s和NSArray s。C char *到Objective-C NSString(或NSData?)

NSDictionary的密钥都是NSString的实例。我使用NSNEXTSTEPStringEncoding将C字符串转换为NSString s,但现在又有一些键是nil(即使C字符串有一个或多个字符)。

这样做的正确方法是什么?

回答

4

NSNEXTSTEPStringEncoding是一个非常古老而罕见的字符串编码,可能是错误的使用。如果您的文本文件起源于西欧或北美,那么您的文本文件通常将采用Latin-1或UTF-8格式。现在我们假设UTF-8(即NSUTF8StringEncoding)。理想情况下,您将知道编写文件时使用的编码,并且在阅读文件时使用该编码。

你大概有其他的代码是正确的,因为你正在收回字符串。这些字符串不是纯粹的7位ASCII码,可能会给你带来麻烦。

+0

'NSUTF8StringEncoding'杀死了大约90%的字符。 'NSISOLatin1StringEncoding'似乎不会杀死任何东西。这很好。 – SK9 2011-05-24 00:51:39

+0

还有其他适合的编码。 – 2011-05-24 00:51:40

+0

的确 - 'NSISOLatin1StringEncoding'可能是我需要的。非常感谢您的帮助。 – SK9 2011-05-24 00:53:15