Emoji 表情搜索与复制
参考手册按多语种关键词浏览和搜索 emoji,支持五种格式复制——字符、码点、HTML 实体、JS 转义、CSS 转义。
不获取远程 URL;请直接粘贴你的 JSON。
本页内容
什么是 emoji 搜索与复制工具?#
emoji 看着像一个字符,但底层大多并不是。笑脸 😀 是单个 Unicode 码位;红心 ❤️ 是两个(一个基础心形,再加一个变化选择符,强制它渲染成彩色 emoji,而不是朴素的文本字形);中国国旗 🇨🇳 是两个地区指示字母拼出来的。当你需要的只是 emoji 本体时这无所谓,直接粘贴字形即可。可一旦你需要它的码位写进文档、需要 HTML 实体塞进网页、需要 JavaScript 转义写进字符串字面量、需要 CSS 转义写进 content: 规则时,那些按 UTF-16 单元拆分的粗糙工具就会把多码位的 emoji 切坏,吐出乱码代理对残片。
本页就是一份能把这些活儿都做对的、可搜索的 emoji 目录。用本语言按名称或关键词搜索,浏览九个分类,点任意一个 emoji,再以五种格式之一复制——字形、码位、HTML、JavaScript、CSS——每种都是逐码位遍历字形后生成的,所以 ❤️ 和 🇨🇳 都不会出错。
怎么使用#
布局是左侧侧边栏(搜索 + 分类)、右侧网格 + 详情面板。
- 找到 emoji。 在搜索框里输入,或在侧边栏点一个分类(笑脸、人物、动物、食物、活动、旅行、物品、符号、旗帜)。搜索会匹配本语言的名称和关键词,也会匹配英文名和码位——所以无论在哪种语言下,输 heart 或 1F600 都能命中。
- 点网格里的某个 emoji。 网格下方的详情面板随即填入字形、本地化名称、Unicode 版本。
- 按需要的格式复制。 详情面板有五个复制按钮:
- 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 图片,而不依赖平台字体;对绝大多数用途,平台原生渲染正是你想要的。