Unicode 字符表,免费
按类别浏览 Unicode 字符,按名称或代码点搜索,并复制到剪贴板。
使用方法
- 点击类别选项卡以显示该组的字符。
- 点击字符查看详情和复制选项。
- 使用搜索栏按名称(如「heart」)或十六进制代码(如「2665」)查找字符。
- 点击复制字符将所选字符复制到剪贴板。
常见问题
什么是 Unicode 代码点?
Unicode 代码点是 Unicode 标准中分配给每个字符的唯一编号。它以十六进制书写,通常带前缀 U+(例如 ♥ 的代码点为 U+2665)。
什么是 HTML 实体?
HTML 实体是用于在 HTML 中表示字符的特殊代码。例如,♥ 代表 ♥。当无法直接键入某个字符时,实体很有用。
什么是 CSS 代码?
CSS 代码使用 \\ 记号在样式表中通过 Unicode 代码点插入字符。例如,.heart::before { content: "\\2665"; } 会插入 ♥。
Unicode简史
在Unicode之前,每个地区都有其不兼容的字符编码:英语使用ASCII,欧洲语言使用ISO 8859系列(8859-1拉丁文-1、8859-5西里尔文、8859-6阿拉伯文),Windows代码页1252/1251/1253-1258,东亚语言使用多字节字符集(日语Shift-JIS、繁体中文Big5、简体中文GB2312、韩语EUC-KR)。编码不匹配会产生乱码,日语称之为mojibake(文字化け,即「字符变形」),在错误的编码下打开日语页面会显示一行行问号或随机拉丁文字符。
这项工作始于1987年的施乐公司。Joe Becker与苹果公司的Lee Collins和Mark Davis开始研究一种能够取代这种拼凑方案的单一通用字符集。Becker于1988年8月提交的草案「Unicode 88」写道:「'Unicode'这个名称旨在传达唯一、统一、通用的编码理念。」Unicode联盟于1991年1月正式成立,同年10月发布了Unicode 1.0,涵盖24种文字的约7,100个字符。
截至Unicode 17.0(2025年9月9日发布),该标准包含172种文字中的约159,801个字符,代码空间分配了1,112,064个有效码位,这意味着Unicode已分配了约14%的可用空间,未来数十年仍有充足余量。近年主要里程碑:Unicode 6.0(2010年)是首个正式收录emoji的版本(共722个,均来自日本运营商);Unicode 17.0新增了四种文字(西底提文、托隆西基文、贝里亚厄尔菲文、傣约文),并将CJK表意字符总数突破100,000大关。
码位、平面与编码
码位是一个数字,用十六进制加U+前缀表示,如♥为U+2665。码位被分组为17个平面,每个平面包含65,536个码位。您读到的几乎所有内容都位于第0平面,即基本多文种平面(BMP,U+0000至U+FFFF)。第1平面(增补多文种平面)收录历史文字(线形文字B、埃及象形文字、楔形文字)、乐谱符号以及几乎全部emoji。第2和第3平面为CJK表意字符扩展区。第4至第13平面为未分配区域,留作未来使用。第14平面承载变体选择器和emoji修饰符。第15和第16平面为私用区,供字体和应用程序自行赋义。
码位只是一个数字;编码是该数字以字节形式存储的方式。Unicode定义了三种编码:
- UTF-8:可变宽度,每字符1至4个字节。由Ken Thompson和Rob Pike于1992年在贝尔实验室设计(据传草拟于新泽西州一家餐厅的餐垫上)。前128个码位(ASCII)占用1个字节,其二进制值与ASCII完全相同,因此纯ASCII文件本身已是有效的UTF-8文件。截至2026年1月,约98.9%的网站使用UTF-8,它也是WHATWG推荐的编码和新文本协议的默认格式。
- UTF-16:可变宽度,2或4个字节。BMP字符占2个字节;增补平面中的字符通过代理对占4个字节(高代理U+D800-U+DBFF加低代理U+DC00-U+DFFF)。被Windows API、Java、JavaScript(字符串
.length统计UTF-16码元,这就是为何emoji通常「算作2个」)和Qt内部使用。在公共网页中使用率不足0.004%。 - UTF-32:固定宽度,每个码位4个字节。索引简单但空间效率低下。被某些Unix运行时内部用于直接码位索引;在磁盘或网络传输中较为少见。
25个不可见空白字符
Unicode正式将25个字符标记为 White_Space=yes 属性:普通空格(U+0020)、制表符、换行符、回车符、不换行空格(U+00A0,外观与普通空格完全相同,但不会在行末断行)、U+2000-U+200A的排印宽度字符、行分隔符/段落分隔符(U+2028/U+2029)、法语排印中常用的窄不换行空格(U+202F)、中等数学空格(U+205F),以及CJK文本使用的全角表意空格(U+3000)。
有几个字符看起来不可见,但并不被归类为空白字符,其行为也与普通空格不同:
- U+200B 零宽空格:允许换行但不产生可见间距;按Unicode分类,不属于空白字符。
- U+200D 零宽连接符:用于多字符emoji(如家庭或职业序列)内部的连接。
- U+200C 零宽非连接符:控制连字合并。
- U+00AD 软连字符:在渲染器换行前保持不可见。
- U+FEFF 字节顺序标记(BOM):位于文件开头时声明字节序;位于文件中间时充当不可见的不换行空格。Excel的UTF-8 CSV导出会在文件前置一个BOM,在下游工具中通常表现为第一列标题前出现意外的前导字符。
这些不可见字符常常是「为什么字符串无法匹配」调试问题的根源,只需将任意字符粘贴到字符映射表的搜索框中,即可显示其实际码位,从而确认您看到的是伪装成直引号的弯引号,还是本应为普通空格位置上的NBSP。
常用字符范围
| 字符块 | 范围 | 示例 |
|---|---|---|
| 拉丁文-1补充 | U+0080-U+00FF | à ñ ü © ® ¥ § ° ¶ |
| 希腊语 | U+0370-U+03FF | α β γ π Σ Ω |
| 西里尔字母 | U+0400-U+04FF | 俄语 / 乌克兰语 / 保加利亚语等 |
| 通用标点符号 | U+2000-U+206F | -, … " " ' ' • † NBSP ZWSP |
| 货币符号 | U+20A0-U+20CF | € £ ¥ ₩ ₽ ₹ ₿ |
| 字母状符号 | U+2100-U+214F | ™ ℠ № ℃ ℉ ℗ |
| 箭头 | U+2190-U+21FF | ← → ↑ ↓ ↔ ⇒ ⇐ |
| 数学运算符 | U+2200-U+22FF | ∑ ∫ ∞ √ ≠ ≤ ≥ ± ∂ ∇ ∈ ∪ ∩ |
| 框线绘制 | U+2500-U+257F | ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ═ ║ ╔ ╗ |
| 数学字母数字符号 | U+1D400-U+1D7FF | 「花式文字」生成器(𝓗𝓮𝓵𝓵𝓸)来源于此。 |
日常写作中的特殊字符
「只需输入一个符号」使用场景的快速参考,这正是本工具存在的核心价值,两次点击即可完成:
- 破折号 U+2014(
—),用于句子级停顿。 - 连接号 U+2013(
–),用于范围(1950-1975)及并列配对(Boston-Hartford)。 - 省略号 … U+2026(
…),单个字符表示的三点。 - 弯引号:左双引号(U+201C)、右双引号(U+201D)、左单引号(U+2018)、右单引号(U+2019)。
- 不换行空格 U+00A0(
),使「100 km」保持连在一起。 - 版权符号 © U+00A9,注册商标 ® U+00AE,商标 ™ U+2122。
- 章节符号 § U+00A7,段落符号 ¶ U+00B6,度数符号 ° U+00B0。
- 乘法符号 × U+00D7,除法符号 ÷ U+00F7,两者都不是字母
x或斜杠。
何时需要字符映射表
- 输入无对应键盘布局的重音字母:résumé、jalapeño、fiancée、naïve。
- 数学与科学:无需打开公式编辑器,直接粘贴 ∑、∫、≠、π、±、∞、μ、Ω 等符号。
- 货币符号:您需要的符号很少在键盘上。欧元 €、日元 ¥、披索 ₱、卢比 ₹。
- 法律和学术写作中的标点符号:破折号、弯引号、章节符号 §、剑号 †。
- 社交媒体简介和品牌的花式展示文字:数学字母数字符号(U+1D400-U+1D7FF)让您无需使用图片即可装饰文字风格。
- CLI和TUI设计:框线绘制字符用于ASCII艺术边框、ncurses程序和README图表。
- 调试编码问题:粘贴一个字符即可查看其实际码位,确认您看到的是伪装成直引号的弯引号。
安全:同形异义攻击问题
许多Unicode字符在不同文字体系中外观完全相同。西里尔字母小写「а」(U+0430)与拉丁字母「a」(U+0061)在视觉上无法区分。攻击者注册看似合法的国际化域名(例如用西里尔字母а替换拉丁a组成的「apple.com」)实施网络钓鱼。2017年,针对 adoḅe.com 的攻击使用了下点ḅ(U+1E05)传播恶意软件。现代浏览器通过限制性的文字混合规则加以防范,当域名混合使用不同文字时,会回退到ASCII Punycode形式(xn--…);Safari在这方面尤为保守。使Unicode在人类书写中大放异彩的同形异义属性,在域名中却埋下了危险,字符映射表正是一眼确认每个字符实际码位的有效工具。
更多问题
字符与字形有何区别?
字符是Unicode编码的抽象单位,即字母A本身,不依赖于任何字体。字形是该字符在特定字体中的具体呈现:Helvetica中的A、Garamond中的A、Comic Sans中的A是同一个字符,却是三种不同的字形。Unicode编码字符;字体承载字形。
为什么Unicode 1.0只有约7,000个字符,而17.0已达160,000个?
Unicode 1.0涵盖24种文字,覆盖了当时计算机常规使用的世界主要现行书写体系。此后的增长来自三个方面:大幅扩展CJK表意字符收录范围(纳入历史汉字和罕见地区变体,扩展J仅在17.0版本中就新增了4,298个字符)、正式编码历史文字(线形文字B、楔形文字、埃及象形文字、腓尼基文字),以及自2010年起收录emoji。
什么是HTML实体?
一种在HTML内部使用特殊转义语法编码字符的方法。对于常用字符有命名实体(© 表示©,— 表示-),对于任意码位有数字实体(♥ 或 ♥ 表示♥)。在直接输入字符不便时(如混合编码的源代码中,或在会过滤非ASCII字符的系统中)非常有用。
什么是CSS转义?
CSS使用反斜杠加十六进制码位:.heart::before { content: "\2665"; } 插入♥。常用于 ::before / ::after 生成内容、CSS计数器样式,以及任何无法依赖源文件编码的场合。
有任何内容会发送至服务器吗?
不会。字符数据随页面一同打包分发;搜索和分类筛选在JavaScript中本地运行;复制功能使用浏览器的剪贴板API。没有任何内容离开您的设备,页面加载后即可离线使用。