将包含\ u ####的字符串转换为iOS iPhone上的字符

我在NSData变量中收到JSON响应,然后将NSDATA转换为NSString:

NSString *aStr = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; 

问题是这个字符串现在包含格式为\ u ####的字符序列。 (例如,Joe \ u2019s)。

我想用单个字符表示转换所有这些事件。 (比如Joe \ u2019s应该成为Joe的。

关于如何做到这一点的任何想法?

此外,有人可以指向我的资源,我可以为此学习正确的术语吗?

非常感谢!

我今天寻找这个问题的答案太久了……终于咬紧牙关并在NSString上写了我自己的类别。 随意纠正错误,我不是一个unicode巫师。 这肯定不能处理unicode过去\uffff但我不需要那种情况。

 @interface NSString (UnicodeAdditions) -(NSString *) unescapeUnicode; @end @implementation NSString (UnicodeAdditions) -(NSString *) unescapeUnicode { NSString *input = self; int x = 0; NSMutableString *mStr = [NSMutableString string]; do { unichar c = [input characterAtIndex:x]; if( c == '\\' ) { unichar c_next = [input characterAtIndex:x+1]; if( c_next == 'u' ) { unichar accum = 0x0; int z; for( z=0; z<4; z++ ) { unichar thisChar = [input characterAtIndex:x+(2+z)]; int val = 0; if( thisChar >= 0x30 && thisChar <= 0x39 ) { // 0-9 val = thisChar - 0x30; } else if( thisChar >= 0x41 && thisChar <= 0x46 ) { // AF val = thisChar - 0x41 + 10; } else if( thisChar >= 0x61 && thisChar <= 0x66 ) { // af val = thisChar - 0x61 + 10; } if( z ) { accum <<= 4; } accum |= val; } NSString *unicode = [NSString stringWithCharacters:&accum length:1]; [mStr appendString:unicode]; x+=6; } else { [mStr appendFormat:@"%c", c]; x++; } } else { [mStr appendFormat:@"%c", c]; x++; } } while( x < [input length] ); return( mStr ); } @end