这是我的代码和日志,这比长篇大论更有效率:)
NSString* cat = [categories objectAtIndex:i];
NSLog(@"category : :%@:", cat);
NSString* decodedString = [NSString stringWithUTF8String:[cat cStringUsingEncoding:[NSString defaultCStringEncoding]]];
NSLog(@"category decoede : %@", decodedString);
LOG : category : :Boissons fra?ches:
然后,我得到这个异常:*** 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*** +[NSString stringWithUTF8String:]: NULL cString'
我只想转换“Boissons fraîches”中的“Boissons fra?ches”之类的字符串。我该怎么办?
编辑
我只想获取 CSV 文件的内容。我的完整代码是:
// Getting content of CSV file
NSError* error;
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"categories" ofType:@"csv"];
NSString* data = [NSString stringWithContentsOfFile:filePath encoding:NSASCIIStringEncoding error:&error];
NSArray* categories = [data componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
for (int i = 0; i < categories.count; ++i) {
NSString* cat = [categories objectAtIndex:i];
NSLog(@"categorie : :%@:", [categories objectAtIndex:i]);
NSString* decodedString = [NSString stringWithUTF8String:[cat cStringUsingEncoding:[NSString defaultCStringEncoding]]];
NSLog(@"categorie : %@", decodedString);
[self.categories addObject:decodedString];
}
最佳答案
C 字符串转换失败,因为原始字符串中有一个字符不能用默认的 C 字符串编码(MacRoman,一种类似于 ISO Latin-1 的旧 8 位编码)表示。
我不完全确定你想做什么,但是 [NSString defaultCStringEncoding]
几乎从来不是你想要使用的编码。如果您能详细说明,我或许可以提供另一种解决问题的方法。
关于ios - NSString 中的 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15464910/