我有一个看起来像这样的NSString。
CitroëÑ
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。它刚刚退出日志。
更新了问题,是否有人知道如何做我想做的事情?我甚至不确定它是否可能。我想做的就是修复已经创建的字符串,但显然编码错误。
答案 0 :(得分:1)
我刚试过你的例子,问题在于:
NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
如果我NSLog
我的data
内容已被nil
返回。这可能意味着“Citroën”不是一个有效的ASCII字符串。如果我使用NSUTF8StringEncoding
,我会在data
对象中获取数据。
我的理解是,如果无法使用指定的字符串编码转换字符串,字符串转换方法将返回nil
。