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: 一朵美丽的茉莉&#127801;
decimal decode: 一朵美丽的茉莉

hexdecimal encode: 一朵美丽的茉莉&#x1f339;
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)的主要内容,如果未能解决你的问题,请参考以下文章

iOS  Emoji表情编码/解码

H.264格式,iOS硬编解码 以及 iOS 11对HEVC硬编解码的支持

iOS8系统H264视频硬件编解码说明

emoji表情处理,emoji表情的编码解码

iOS8系统H264视频硬件编解码说明

iOS硬编解码相关知识