NSString将Emojis转换为HTML实体

时间:2014-06-01 17:18:13

标签: php ios objective-c character-encoding html-entities

我有一个iOS应用程序和PHP Web服务,用户提交了“密码”并将其哈希。

当您输入表情符号时会出现问题:

  • PHP哈希盐+😍

  • iOS哈希+ [眼睛笑脸表情符号]

有没有办法将iOS上的表情符号转换为相应的HTML实体(就像PHP自动执行),以便生成的哈希值相同?

  • stringWithUTF8String不起作用
  • NSNonLossyASCIIStringEncoding将其转换为“\ ud83d \ ude0d”

1 个答案:

答案 0 :(得分:1)

这是一个解决方案,也许有一个内置的:

NSString *emojiString = @"";
NSLog(@"emojiString: %@", emojiString);

NSData *codePointData = [emojiString dataUsingEncoding:NSUTF32LittleEndianStringEncoding];
u_int32_t codePoint = *((u_int32_t *)(codePointData.bytes));
NSString *escapedEmoji = [NSString stringWithFormat:@"&#%d", codePoint];
NSLog(@"escapedEmoji: %@", escapedEmoji);
NSLog output:  
   emojiString:
  escapedEmoji:&#128525

这是基于转义的表情符号是代码点的十进制数这一事实。二进制代码点是unicode字符的UTF-32编码 不幸的是,我无法找到预先存在的解决方案。