Jer*_*ero 2 unicode xcode nsstring ios emoji
我试图从包含表情符号Unicode的后端提取JSON文件。这些不是旧版Unicode(例如:\ ue415),而是跨平台工作的Unicode(例如:\ U0001F604)。
这是被提取的json示例:
[
{
"unicode": "U0001F601",
"meaning": "Argh!"
},
{
"unicode": "U0001F602",
"meaning": "Laughing so hard"
}
]
Run Code Online (Sandbox Code Playgroud)
我很难将这些字符串转换为将在应用程序中显示为表情符号的unicode。
任何帮助是极大的赞赏!
小智 5
为了将这些Unicode字符转换为NSString,您将需要获取这些Unicode字符的字节。
获取字节后,很容易用字节初始化NSString。下面的代码正是您想要的。它假设jsonArray是NSArray从您的json提取生成的。
// 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);
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3088 次 |
| 最近记录: |