工具
指南

Emoji 表情搜索与复制

参考手册

按多语种关键词浏览和搜索 emoji,支持五种格式复制——字符、码点、HTML 实体、JS 转义、CSS 转义。

100% 客户端 无后端

不获取远程 URL;请直接粘贴你的 JSON。

全部分类
正在加载 emoji 搜索…
本页内容

什么是 emoji 搜索与复制工具?#

emoji 看着像一个字符,但底层大多并不是。笑脸 😀 是单个 Unicode 码位;红心 ❤️ 是两个(一个基础心形,再加一个变化选择符,强制它渲染成彩色 emoji,而不是朴素的文本字形);中国国旗 🇨🇳 是两个地区指示字母拼出来的。当你需要的只是 emoji 本体时这无所谓,直接粘贴字形即可。可一旦你需要它的码位写进文档、需要 HTML 实体塞进网页、需要 JavaScript 转义写进字符串字面量、需要 CSS 转义写进 content: 规则时,那些按 UTF-16 单元拆分的粗糙工具就会把多码位的 emoji 切坏,吐出乱码代理对残片。

本页就是一份能把这些活儿都做对的、可搜索的 emoji 目录。用本语言按名称或关键词搜索,浏览九个分类,点任意一个 emoji,再以五种格式之一复制——字形、码位、HTML、JavaScript、CSS——每种都是逐码位遍历字形后生成的,所以 ❤️ 和 🇨🇳 都不会出错。

怎么使用#

布局是左侧侧边栏(搜索 + 分类)、右侧网格 + 详情面板。

  1. 找到 emoji。 在搜索框里输入,或在侧边栏点一个分类(笑脸、人物、动物、食物、活动、旅行、物品、符号、旗帜)。搜索会匹配本语言的名称和关键词,也会匹配英文名和码位——所以无论在哪种语言下,输 heart 或 1F600 都能命中。
  2. 点网格里的某个 emoji。 网格下方的详情面板随即填入字形、本地化名称、Unicode 版本。
  3. 按需要的格式复制。 详情面板有五个复制按钮:
    • Emoji —— 字形本体,用于聊天、文档、设计软件。
    • 码位(Code point) —— U+... 形式(多个时以空格连接),用于文档或 Unicode 查询。
    • HTML —— 十进制数字字符引用,用于粘进原始 HTML。
    • JS —— ES2015 花括号转义,用于 JavaScript / TypeScript 字符串字面量。
    • CSS —— CSS 转义,用于 content: 或 ::after 规则内部。

主要特性#

  • 五种格式,各一键复制。 字形、码位、HTML/JS/CSS 转义之间不用手工换算,每个 emoji 五种全有。
  • 多码位 emoji 也能做对。 转义是按 Unicode 码位遍历字形生成的,不是按 UTF-16 单元。红心 ❤️ 得到的是干净的 \u{2764}\u{FE0F},而不是乱码代理对。
  • 本地化搜索、跨语言仍可用。 名称和关键词已本地化,但英文也始终在索引里,原始码位也在——所以 smile、本语言的词、1F600 都能定位到同一个 emoji。
  • 九个分类。 标准 Unicode emoji 分类,侧边栏每类配一个代表性字形,没搜索词时也能浏览。
  • 键盘和无障碍友好。 网格是一个 listbox,支持方向键导航;详情面板是 aria-live 区域,移动时会朗读名称和码位。

实例演示#

把红心 ❤️ 五种格式都复制一遍。在”符号”分类里点它(或搜 heart),详情面板给出:

  • Emoji:❤️
  • 码位:U+2764 U+FE0F
  • HTML:❤️
  • JS:\u{2764}\u{FE0F}
  • CSS:\2764 \FE0F

注意这里有两个码位,不是一个。U+2764 是基础心形(一个早在 emoji 出现之前就存在的纯文本字符);U+FE0F 是变化选择符-16,一个零宽码位,唯一职责就是告诉渲染器”把前一个字符显示成彩色 emoji 形式,而不是黑色文本字形”。丢掉这个选择符,有些平台会显示成文本风格的心;留着它,才得到红色 emoji。这里的每种格式都保留了两个码位,所以把那串 HTML 实体粘进页面,渲染出来的仍是彩色心。

对照看一下笑脸 😀——它是单码位(U+1F600)。它的各种形式塌缩成 😀、\u{1F600}、\1F600——各一个转义,因为只有一个码位要编码。两者的差别,正解释了”为什么需要一个逐码位(而非假设一个字形等于一个码位)处理的工具”。

常见问题#

我该复制哪种格式?#

聊天、文档、设计稿用 Emoji——字形是通用的。技术文档或 bug 报告里要指代某个具体字符,复制码位(U+1F600)。原始 HTML 源码里,HTML(😀)最稳,不会被编码问题搞坏。JavaScript / TypeScript 字符串用 JS(\u{1F600})。CSS 的 content: 值用 CSS(\1F600)。

为什么红心显示两个码位?#

因为 ❤️ 是一个序列,不是单个字符。基础码位 U+2764 是文本心;U+FE0F 是变化选择符,请求 emoji 呈现样式。有的 emoji 更进一步,用零宽连接符把几个字形合成一个(一家人 emoji 就是这么拼出来的);而旗帜永远是两个地区指示字母的组合。本工具在生成转义前会按码位遍历字形,序列里的每个码位都得以保留。

为什么是 \u{1F600} 而不是直接写 😀?#

两者都是同一个 emoji 在 JavaScript 里的合法写法,但机制不同。😀 是一个代理对——两个 UTF-16 单元,只有合在一起才有意义,是编码 U+FFFF 以上字符的老办法。\u{1F600} 是 ES2015 的码位转义,直接写出真实码位,可读性好得多。本工具输出码位形式,因为它清晰且现代;若你需要代理对形式,码位值已经告诉你要转换的准确目标。

同一个 emoji,手机上和电脑上长得不一样,为什么?#

Unicode 定义的是每个 emoji 的含义,但每个平台(苹果、谷歌、微软、三星)各自画自己的图,所以同一个码位在不同平台上渲染出不同的画面。码位、HTML 实体、各种转义在所有平台上完全一致——变的只是像素。如果视觉一致性很重要(比如品牌活动),就得自带一套 emoji 图片,而不依赖平台字体;对绝大多数用途,平台原生渲染正是你想要的。