公司的一款 iOS 应用能够使用微信授权认证登录注册, 然后把微信的用户昵称设置为注册用户的默认昵称.
目前遇到的问题是, 在微信那边用户名可以插入 Emoji 表情, 可是那些表情到我们应用这边就全部乱码了.
现在想知道有什么方法可以使微信那边的昵称可以完整的显示在这边 iOS 应用上, 不打算过滤掉那些 Emoji 字符.
原来的昵称是:
显示结果是:
目前得出的答案是数据库没有添加 Emoji 支持, 导致从微信那边获取过来的带有 Emoji 表情的昵称出现乱码, 有两种解决方式:
1.是给数据库添加 Emoji 支持, 在 SO 上有解决的方法
2.在用户进行注册时把获取过来的乱码过滤掉, 只留下正常的字符, 过滤我使用了下面的方法, 代码比较简陋, 但可以正常使用:
- (NSString*)removeEmoji:(NSString *)username {
NSString *regex = @"^[a-zA-Z0-9_\u4e00-\u9fa5]+$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
NSString *temp = nil;
for(int i = 0; i < [username length]; i++)
{
temp = [username substringWithRange:NSMakeRange(i, 1)];
if ([predicate evaluateWithObject:temp]) {
NSLog(@"%@", temp);
NSLog(@"This character is OK");
} else {
NSRange range = NSMakeRange(i, 1);
username = [username stringByReplacingCharactersInRange:range withString:@" "];
}
}
NSString *withoutEmojiUsername = [username stringByReplacingOccurrencesOfString:@" " withString:@""];
return withoutEmojiUsername;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。