微信昵称中的 Emoji 字符在授权后的 iOS 应用中显示乱码

发布于 2022-09-01 05:19:44 字数 444 浏览 36 评论 0

公司的一款 iOS 应用能够使用微信授权认证登录注册, 然后把微信的用户昵称设置为注册用户的默认昵称.

目前遇到的问题是, 在微信那边用户名可以插入 Emoji 表情, 可是那些表情到我们应用这边就全部乱码了.

现在想知道有什么方法可以使微信那边的昵称可以完整的显示在这边 iOS 应用上, 不打算过滤掉那些 Emoji 字符.

原来的昵称是:
clipboard.png

显示结果是:
clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

℉服软 2022-09-08 05:19:44

目前得出的答案是数据库没有添加 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;
}
↙温凉少女 2022-09-08 05:19:44

没写过iOS程序,个人看法是,微信也是用字符来存储这种加了表情的昵称,然后可能恰好这个字符到了iOS系统变成了另一个表情。
等高手。

站稳脚跟 2022-09-08 05:19:44

看下字符串的编码是不是正常的,还有可能是字符串格式的问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文