3

我有一个看起来像这样的 NSString。

雪铁龙

这是 Citron 的 ASCII。因此,努力尝试将此 NSString 转换为像这样的正确形式

string = [dict valueForKey:@"WIGMIGDIGFIG"]; //myBadString
NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
//sent it back to NSData with ACII encoding
NSString* mystring = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// put it back into a NSString but with the correct encoding
NSLog(@"%@", mystring);// check result.

因此,我通过一个循环运行它以检查我的字典数组中的所有字符串,并且每个返回到日志中的字符串都接受其中包含 Citroën 的一个字符串。它只是从日志中遗漏了。

更新的问题,有人知道如何做我想做的事吗?我什至不确定这是否可能。我要做的就是修复已经创建但显然编码错误的字符串。

4

1 回答 1

1

我刚刚尝试了您的示例,问题出在以下行:

NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];

如果我NSLog的内容datanil退回。这大概意味着“Citroën”不是一个有效的 ASCII 字符串开头。如果我NSUTF8StringEncoding改用,我会在data对象中获取数据。

我的理解是,nil如果无法使用指定的字符串编码转换字符串,则字符串转换方法将返回。

于 2012-10-24T01:56:27.813 回答