iOS Emoji编解码(OBJ-C/Swift)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS Emoji编解码(OBJ-C/Swift)相关的知识,希望对你有一定的参考价值。
参考技术A Swift:Swift:
也需要扩展NSString
Swift中用到的扩展:
其中♀前后都有不可见字符,用来表示♀是需要和💁合并的。表示形式为: \u200d ♀ \ufe0f
而我们在编码Emoji时,将Emoji用<<>>括起来进行发送。
其中Swift语言编码的String,会将 > 这个符号和表情带的 \u200d 与 \ufe0f 结合
转换成Unicode↓
所以在实际使用时,使用NSString来代替String。
Emoji表情编解码库XXL-EMOJI
《Emoji表情编解码库XXL-EMOJI》
一、简介
1.1 概述
XXL-EMOJI 是一个灵活可扩展的Emoji表情编解码库,可快速实现Emoji表情的编解码.
1.2 特性
- 1、简洁:API直观简洁,一分钟上手;
- 2、易扩展:模块化的结构,可轻松扩展;
- 3、别名自定义:支持为Emoji自定义别名;
- 4、实时性:实时收录最新发布的Emoji;
1.3 下载
文档地址
源码仓库地址
源码仓库地址 | Release Download |
---|---|
https://github.com/xuxueli/xxl-emoji | Download |
https://gitee.com/xuxueli0323/xxl-emoji | Download |
技术交流
1.4 环境
- JDK:1.7+
二、快速入门
第一步:引入Maven依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-emoji</artifactId>
<version>${最新稳定版}</version>
</dependency>
第二步:直接使用
引入Maven依赖,即可直接使用。
可参考以下示例代码:
String input = "一朵美丽的茉莉";
System.out.println("unicode:" + input);
// 1、alias:将Emoji表情转换为别名,然后还原;
String aliases = EmojiTool.encodeUnicode(input, EmojiEncode.ALIASES);
System.out.println("
aliases encode: " + aliases);
System.out.println("aliases decode: " + EmojiTool.decodeToUnicode(aliases));
// 2、html decimal:将Emoji表情Unicode数据转换为十进制数据,然后还原;
String decimal = EmojiTool.encodeUnicode(input, EmojiEncode.HTML_DECIMAL);
System.out.println("
decimal encode: " + decimal);
System.out.println("decimal decode: " + EmojiTool.decodeToUnicode(decimal));
// 3、html hex decimal:将Emoji表情Unicode数据转换为十六进制数据,然后还原;
String hexdecimal = EmojiTool.encodeUnicode(input, EmojiEncode.HTML_HEX_DECIMAL);
System.out.println("
hexdecimal encode: " + hexdecimal);
System.out.println("hexdecimal decode: " + EmojiTool.decodeToUnicode(hexdecimal));
示例代码运行后,日志输入如下:
aliases encode: 一朵美丽的茉莉:rose:
aliases decode: 一朵美丽的茉莉
decimal encode: 一朵美丽的茉莉🌹
decimal decode: 一朵美丽的茉莉
hexdecimal encode: 一朵美丽的茉莉🌹
hexdecimal decode: 一朵美丽的茉莉
三、总体设计
3.1 功能定位
XXL-EMOJI 是一个灵活可扩展的Emoji表情编解码库,可快速实现Emoji表情的编解码.
3.2 Emoji编码类型
概念 | 说明 |
---|---|
EmojiEncode.ALIASES | 将Emoji表情转换为别名,格式为 ": alias :"; |
EmojiEncode.HTML_DECIMAL | 将Emoji表情Unicode数据转换为十进制数据; |
EmojiEncode.HTML_HEX_DECIMAL | 将Emoji表情Unicode数据转换为十六进制数据; |
3.3、Emoji编解码API
API | 说明 |
---|---|
public static String encodeUnicode(String input, EmojiTransformer transformer, FitzpatrickAction fitzpatrickAction) | Emoji表情编码方法,支持自定义编码逻辑; |
public static String encodeUnicode(String input, EmojiEncode emojiEncode, FitzpatrickAction fitzpatrickAction) | Emoji表情编码方法,支持自定义编码类型; |
public static String encodeUnicode(String input, EmojiEncode emojiEncode) | Emoji表情编码方法,支持自定义编码类型; |
public static String encodeUnicode(String input) | Emoji表情编码方法,编码类型默认为 "ALIASES" ; |
public static String decodeToUnicode(String input) | Emoji表情解码方法,支持针对 "ALIASES、HTML_DECIMAL、HTML_HEX_DECIMAL" 等编码方式解码; |
public static String removeEmojis(String input, final Collection | 清除输入字符串中的Emoji数据; |
public static List | 查找输入字符转中的全部Emoji数据列表; |
3.4、自定义Emoji别名
略
四、版本更新日志
版本 V1.0.0,新特性[2018-07-06]
- 1、简洁:API直观简洁,一分钟上手;
- 2、易扩展:模块化的结构,可轻松扩展;
- 3、别名自定义:支持为Emoji自定义别名;
- 4、实时性:实时收录最新发布的Emoji;
版本 V1.0.1,新特性[迭代中]
TODO LIST
- 1、Emoji远程编解码服务;
五、其他
5.1 项目贡献
欢迎参与项目贡献!比如提交PR修复一个bug,或者新建 Issue 讨论新特性或者变更。
5.2 用户接入登记
更多接入的公司,欢迎在 登记地址 登记,登记仅仅为了产品推广。
5.3 开源协议和版权
产品开源免费,并且将持续提供免费的社区技术支持。个人或企业内部可自由的接入和使用。
- Licensed under the GNU General Public License (GPL) v3.
- Copyright (c) 2015-present, xuxueli.
捐赠
无论金额多少都足够表达您这份心意,非常感谢 :) 前往捐赠
以上是关于iOS Emoji编解码(OBJ-C/Swift)的主要内容,如果未能解决你的问题,请参考以下文章