ios - NSString 中的 Unicode 字符

标签 ios objective-c unicode

这是我的代码和日志,这比长篇大论更有效率:)

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/

相关文章:

ios - Estimote Beacon 加速度计更新时间

ios - 在 Swift ios 中使用 vImageBuffer_initWithCGImage 时出现 "fatal error: unexpectedly found nil while unwrapping an Optional value"

ios - 如何使用 AVAssetWriter 而不是 AVAssetExportSession 来重新编码现有视频

javascript - 如何在 ios 上将按钮操作捕获到 javascript 中?

javascript - 如何将 javascript 对象转换为 utf-8 Blob 以供下载?

java - PDFBox U+00A0 在此字体编码中不可用

mysql - 包含 UTF8 字符的旧条目错误地保存在 UTF8 数据库中

ios - 在主表/明细表上使用不同的 xib 文件查看所选的项目 iOS

ios - 为什么去我得到这个错误 : "Could not find member ' append'"?

objective-c - iPad - 弹出框颜色