首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSString到Emoji Unicode

NSString到Emoji Unicode
EN

Stack Overflow用户
提问于 2014-07-09 19:34:03
回答 1查看 3.3K关注 0票数 2

我正在尝试从后端提取一个JSON文件,其中包含用于表情符号的独角兽。这些不是遗留的独角兽(例如:\ the 415),而是跨平台工作的独角兽(例如:\U0001F604)。

下面是json被拉出来的一个样本:

代码语言:javascript
复制
[
 {
 "unicode": "U0001F601",
 "meaning": "Argh!"
 },
 {
 "unicode": "U0001F602",
 "meaning": "Laughing so hard"
 }
]

我很难将这些字符串转换成独角兽,它将在应用程序中显示为表情符号。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-09 23:08:33

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

获得字节后,很容易用字节初始化NSString。下面的代码完全符合您的要求。它假设jsonArray是从您的json被拉出来的NSArray

代码语言:javascript
复制
// 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);
}];
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24662336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档