ios - Objective-C读取十六进制代码并输出表情符号

标签 ios objective-c emoji

我有表情符号代码(即Unicode十六进制代码),例如U0001f618。我希望能够输入代码并返回表情符号。到目前为止,这有效:

NSLog (@"\U0001f618");

这会返回表情符号,但是如果我将代码存储在文件中,然后将其导入到NSString中并调用;
NSLog (unicodeForEmoji);

返回代码,即:\ U0001f618,有什么想法吗?

谢谢

d

最佳答案

字节是unicode编码的:NSUTF32BigEndianStringEncoding

要直接从文件读取,请使用:

NSString *unicodeString = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF32BigEndianStringEncoding error:&error];

测试:
// The next two lines substiture to reading the data from the file:  
unsigned char unicode32Chars[4] = { 0x00, 0x01, 0xf6, 0x18 };
NSData *unicode32Data = [NSData dataWithBytes:unicode32Chars length:4];
NSLog (@"unicode32Data: '%@'", unicode32Data);

NSString *unicode32String = [[NSString alloc] initWithData:unicode32Data encoding:NSUTF32BigEndianStringEncoding];
NSLog (@"unicode32String: '%@'", unicode32String);

输出:
unicodeData: '<0001f618>'  
unicodeString: '😘'

我怀疑您可能真的想使用UTF-8编码,但这是一个不同的字节字符串:
unsigned char unicode8Chars[4] = { 0xf0, 0x9f, 0x98, 0x98 };
NSData *unicode8Data = [NSData dataWithBytes:unicode8Chars length:4];
NSLog (@"unicode8Data: '%@'", unicode8Data);

NSString *unicode8String = [[NSString alloc] initWithData:unicode8Data encoding:NSUTF8StringEncoding];
NSLog (@"unicode8String: '%@'", unicode8String);

输出:
unicode8Data: '<f09f9898>'  
unicode8String: '😘'

关于ios - Objective-C读取十六进制代码并输出表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26198249/

相关文章:

iOS:购买时恢复之前购买的应用内商品,但不更新交易

iphone - 如何划分数字和整数?

php - 如何恢复存储在普通 utf8 中的 4 字节表情符号字符的正确编码 - 就像这样 : 😊?

ios - 用图像替换字符串字符

ios - 未在 Objective-C 中调用自定义委托(delegate)方法

ios - 有没有办法以编程方式获取 iOS 中音频单元的所有参数?

ios - UITextView/UITextField 的虚线/虚线边框

ios - 如何为托管对象的关系触发故障

iphone - 如何将旧的表情符号编码转换为 iOS5 中的最新编码?

ios - IONIC 3 - 底部标签 iPhone X UI 问题