Android开发经验谈Android技术知识Android开发

ios - android - web emoji互通方案及实现

2020-07-02  本文已影响0人  DaZenD

ios

ios 表情较多,最新的还包含有肤色:

所以:https://github.com/vbonluk/iOS_Emoji 单就ios内实现的话,这篇文章支持的表情更全一些

但是,emoji跟多个平台互通:android,web,server保存。。所以,需要通过统一的手段实现。

转 html

https://www.jianshu.com/p/8436bdd30769

大致分为4类表情

单字节长的符号

ヘ,ડ等。。

这类表情出现在ios的表情”新鲜“一栏中,颜文字中这类的也较多。。这类里的表情是组合的,并且规则不统一,有些是单字节组合多字节,有些是多字节组合

单字符长 & 字节len > 2


´´´´´´´´´´
••••••••••

普通表情

web,ios,android通用的表情,字符长 == 2;一般字节数 >= 4

这类表情,Unicode码是单一的

组合字符表情

如:

👩‍❤️‍💋‍👩 :U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F469

👯‍♀️:U+1F46F U+200D U+2640 U+FE0F

Unicode码是组合字符,lenght > 2..字符长都是大于2的。

表情过滤方案

方案1:收集几个特殊字符,获取十六进制码,过滤掉
处理:特殊字符Unicode需要自己收集,不合理,但是当成表情处理发送,android端可能没有,会显示为:񝶐

可以妥协

特殊字符:UniChar隐藏版iPhone特殊表情

如果需要收集,这里特殊表情大全,需要ios13手机copy处来,用ios代码计算出来各个表情的Unicode码

方案2:当成非表情发送。。。特殊的:作业接口不行
处理:༄。这类符号,其实是单字节的表情,特殊匹配处理:

1):获取表情Unicode码:格式为@"F04",非@"OxF04"
2):转为html。形如:@"&#3844"..为了跟普通表情保持统一,需要在前面补0::形如:@”&#003844“
3):格式化单字节表情hmtl码:补全长度为9.。

android server 互通

android 库:

android emoji转html,有16进制的,如:⚾ 有是进制的,如:⚾

所以:到ios端,需要特殊处理兼容一下。。。

是否是十六进制,处理一下

修饰符

️ 就是 ️

在处理的时候,原html字符串的截取要考虑到这种修饰符。以为它:不占位置,但有长度

Unicode码是:FE00 ~ FE0F

这中符号,在正则匹配中,就不要匹配出来,空就空了。不要匹配出来转hmtl。正常。。

建议先将emoji转html,再过滤

__block NSString *result = text;
    NSString * regExpStr = @"[\\uFE00-\\uFE0F]";
    NSString * replacement = @"";
    NSRegularExpression *regExp = [[NSRegularExpression alloc] initWithPattern:regExpStr options:NSRegularExpressionCaseInsensitive error:nil];
    // 替换匹配的字符串为
    result = [regExp stringByReplacingMatchesInString:result
                                              options:NSMatchingReportProgress
                                                range:NSMakeRange(0, result.length)
                                         withTemplate:replacement];

高半代理

mac上查看Unicode字符表

bianti.png

肤色

从Unicode字符表里能查到

unitl

回头补上我的链接

参考文章

方案偏

Emoji 实战问题:iOS,Android,Server

技术篇

从Emoji的限制到Unicode编码

由一个 emoji 引发的思考

NSString 与 Unicode

正则

技巧篇

计算字符字节长

ios字符长补长
ios数字字符长补长

物料偏

EMOJI CHEAT SHEET

liuyuning/DumpEmoji

full-emoji-list

工具

正则校验

上一篇下一篇

猜你喜欢

热点阅读