如何更改NSString编码

时间:2012-10-24 01:32:43

标签: ios encoding nsstring nsdata

我有一个看起来像这样的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。它刚刚退出日志。

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

1 个答案:

答案 0 :(得分:1)

我刚试过你的例子,问题在于:

NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];

如果我NSLog我的data内容已被nil返回。这可能意味着“Citroën”不是一个有效的ASCII字符串。如果我使用NSUTF8StringEncoding,我会在data对象中获取数据。

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