我已更新我的服务器端代码以存储utf8mb4类型。在ios中我通过转换为(NSMutableData *)[dataStr dataUsingEncoding:NSUTF8StringEncoding]将“[[UIDevice currentDevice] name]”发送到服务器
现在,当我找回设备列表时,我需要比较名称并找出哪一个是当前设备。
这里我无法比较名称中是否有表情符号。
第一个问题是获得正确的设备名称长度。对于1个表情符号字符length
,函数将返回2.使用
[[[UIDevice currentDevice] name] lengthOfBytesUsingEncoding:NSUTF32StringEncoding] / 4
第二个问题是与服务器发送的名称共存。服务器发送名称,如“Ipad \ Uf643”和
NSData *dataenc = [[[UIDevice currentDevice] name] dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString * deviceName = [[NSString alloc]initWithData:dataenc encoding:NSUTF8StringEncoding];
给出“Ipad \ ud83d \ ude43”
这是同一表情符号的两种不同形式。 Python和客观C表示是不同的。
然后比较我尝试了isEqualToString
,localizedCompare
。无法弄清楚如何做到这一点。 “Ipad \ Uf643”也显示为?
。