Emoji短代码互转工具

本地处理
  • 打赏支持
  • 分享链接
  • 反馈建议
短代码是形如 :grinning: 的文本标记,常见于 GitHub、Slack、Discord。它以纯文本形式保存表情,避免不同系统的编码差异。本工具内置常用表情映射,未收录的表情会原样保留。
-
转换数量
-
内置表情数
-
输入字符数
-
输出字符数
转换结果将显示在这里
短代码表情含义
Emoji 转短代码:在文本中查找已收录的表情符号,替换为冒号包裹的短代码;按字符长度从长到短匹配,避免组合表情被截断。短代码转 Emoji:用冒号包裹的标识符(字母、数字、下划线、加减号组成)查表替换,未收录的短代码保持原样。

短代码解决什么麻烦

Emoji 在底层是 Unicode 字符,看起来只是一个图形,实际可能由多个码点组合而成。这在数据流转中带来不少麻烦:某些数据库的字符集不支持 4 字节字符,会直接报错或写入问号;不同系统对同一表情的渲染差异也很大,同一条消息在手机上和在电脑上长得完全不一样。

短代码用纯 ASCII 文本表示表情,形如 :smile:。它不依赖字符集,能安全地在各种系统之间传输与存储,需要显示时再渲染成图形。GitHub、Slack、Discord 都用这套机制。

两个方向什么时候用

  • 转成短代码:把用户输入的表情入库、做文本分析、统计表情使用频率、跨系统传输时。搜索和去重也更方便——短代码可以直接做字符串匹配。
  • 转回 Emoji:解析聊天记录导入、把从接口拿到的文本渲染给用户看、恢复备份数据时。

组合表情的坑

有些表情由多个码点拼成,例如带肤色的手势(基础手势 + 肤色修饰符)、家庭表情(多个人物 + 连接符 + 性别符号)。它们的字符长度可能是 4 到 8,而不是 2。替换时必须先匹配长的再匹配短的,否则会出现「半个表情被替换、剩下一个孤立修饰符」的乱码。本工具按长度降序匹配来规避这个问题。

常见问题

为什么有些表情没有被转换

因为内置映射表只收录了常用表情。Unicode 里的表情符号超过三千个,而且每年还在增加,全部收录会让页面体积膨胀。未收录的表情会被原样保留,不影响其他部分的转换。如果恰好有高频使用的表情不在表内,可以反馈补充。

转成短代码后长度变长了怎么办

这是正常的:一个表情占 2 到 4 个字符,而短代码通常有 8 到 20 个字符。如果对存储长度敏感(例如短信、有字数限制的字段),建议只在数据存储与分析场景使用短代码,展示层仍用原始表情。

你可能还想问

短代码有什么用?

在 Markdown、GitHub 评论、Slack 等平台输入短代码即可显示表情,跨平台一致性更好;不同平台对同一表情的短代码命名可能略有差异。

转换后表情不显示怎么办?

可能是平台不支持该短代码或系统字库缺失;优先使用通用表情,避免较新的版本表情(旧系统会显示为方框)。

数据库里该存表情还是短代码?

建议存原始表情字符(Unicode)并保证数据库使用 utf8mb4 编码,避免截断;短代码适合作为输入辅助,不适合作为存储格式。