【发布时间】:2014-05-22 18:17:41
【问题描述】:
我目前正在尝试将一些包含表情符号的 JSON 发布到 python API。我尝试直接使用包含来自我的 UITextField 表情符号的字符串来输入 NSJSONSerialization,但是序列化程序在没有有意义的解释的情况下崩溃了。 之后我尝试进行一些格式转换,结果是这样的:
NSString *uniText = mytextField.text;
NSData *msgData = [uniText dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *goodMsg = [[NSString alloc] initWithData:msgData encoding:NSUTF8StringEncoding] ;
这基本上是可行的,只是生成的 UTF-8 有点“转义”,结果如下:
"title":"\\ud83d\\udc8f\\ud83d\\udc8f\\ud83d\\udc8f\\ud83d"
有什么建议可以解决这个问题吗?
【问题讨论】:
-
NSJSONSerialization 应该可以工作。
-
我认为这正是
NSNonLossyASCIIStringEncoding应该做的。 -
JSON 应始终为 UTF。
-
uniText 包含您想要的文本。 goodMsg 包含格式混乱的文本。 NSJSONSerialization 本来可以很好地序列化 uniText,而不是你要求它序列化你搞砸的“goodMsg”。
-
不要使用
NSNonLossyASCIIStringEncoding,使用NSUTF32LittleEndianStringEncoding。表情符号位于 UTF 平面 1 中,因此是 21 位代码点。
标签: ios nsstring nsdata nsjsonserialization emoji