NSString到表情符号Unicode

我试图从后端包含表情符号的unicodes拉JSON文件。 这些不是传统的unicode(例如:\ ue415),而是跨平台的unicode(例如:\ U0001F604)。

下面是json被拉的示例片段:

[ { "unicode": "U0001F601", "meaning": "Argh!" }, { "unicode": "U0001F602", "meaning": "Laughing so hard" } ] 

我很难将这些string转换为应用程序中显示为表情符号的unicode。

任何帮助是极大的赞赏!

为了将这些unicode字符转换为NSString,您将需要获取这些unicode字符的字节。

得到字节后,用字节初始化NSString很容易。 下面的代码正是你想要的。 它假定jsonArray是从你的json被拉取生成的NSArray

 // initialize using json serialization (possibly NSJSONSerialization) NSArray *jsonArray; [jsonArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSString *charCode = obj[@"unicode"]; // remove prefix 'U' charCode = [charCode substringFromIndex:1]; unsigned unicodeInt = 0; //convert unicode character to int [[NSScanner scannerWithString:charCode] scanHexInt:&unicodeInt]; //convert this integer to a char array (bytes) char chars[4]; int len = 4; chars[0] = (unicodeInt >> 24) & (1 << 24) - 1; chars[1] = (unicodeInt >> 16) & (1 << 16) - 1; chars[2] = (unicodeInt >> 8) & (1 << 8) - 1; chars[3] = unicodeInt & (1 << 8) - 1; NSString *unicodeString = [[NSString alloc] initWithBytes:chars length:len encoding:NSUTF32StringEncoding]; NSLog(@"%@ - %@", obj[@"meaning"], unicodeString); }]; 

//string到Unicode

如果让数据= NormalString.data(使用:String.Encoding.nonLossyASCII),让convertedString = String.init(数据:数据,编码:String.Encoding.utf8){返回convertedString}

// Unicode到string

如果let data = UnicodeString.data(using:String.Encoding.utf8),让convertedString = String.init(data:data,encoding:String.Encoding.nonLossyASCII){return convertedString}