2011-05-23 78 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