表情符号字符无法编码为JSON

jan*_*del 12 json character-encoding ios emoji

我有一个UITextView我打电话messageField.内的数据messageFieldPOST-ed服务器JSON格式.当用户键入表情符号字符时,我无法将数据编码到JSON.我在想Emoji使用Unicode编码.

有没有办法将表情符号编码为JSON?从JSON回到Emoji以显示在UILabel

Kar*_*run 28

我使用下面的代码来编码表情符号字符

NSString *uniText = [NSString stringWithUTF8String:[textview.text UTF8String]]; 
NSData *msgData = [uniText dataUsingEncoding:NSNonLossyASCIIStringEncoding]; 
NSString *goodMsg = [[NSString alloc] initWithData:msgData encoding:NSUTF8StringEncoding] ;
Run Code Online (Sandbox Code Playgroud)

以下代码在UILabel中解码和显示

const char *jsonString = [body UTF8String]; 
NSData *jsonData = [NSData dataWithBytes:jsonString length:strlen(jsonString)]; 
NSString *goodMsg = [[NSString alloc] initWithData:jsonData encoding:NSNonLossyASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)


Chr*_*aas 10

编辑 - 2016-03-03 请注意,这个答案是在2011年写的,可能不再相关.

表情符号字符只是用于呈现特定unicode代码点的特定字体.iOS使用其中一个Unicode专用区域来表示特定于表情符号的代码点.将这些"字符"视为表情符号的唯一方法是使用表情符号字体,以及知道如何从默认文本字体(如Helvetica)切换到表情符号字体的机器.

我不知道你是如何对JSON进行编码的,但是因为表情符号只是文本,所以只要你以UT-8或UTF-16等Unicode友好格式传输文本就不应该有任何问题.您不会在服务器端或数据库中看到它(除非您查看具有先前先决条件的数据),但您应该能够返回相同的原始字节,它应该看起来相同.

这里有一些帖子可能会有所帮助: