Unicode 词汇表

150 个 Unicode 核心术语详解——从字符编码基础到安全概念。

编码 (17)

ASCII

美国信息交换标准代码。7位编码,涵盖128个字符(0–127),包括控制字符、数字、拉丁字母和基本符号。

ASCII Art

Visual art created from text characters, originally limited to the 95 printable ASCII characters. Unicode expands the palette with box-drawing …

Base64

Binary-to-text encoding that represents binary data using 64 ASCII characters (A–Z, a–z, 0–9, +, /). Used for embedding binary data …

Big5

主要在台湾和香港使用的繁体中文字符编码,收录约13,000个CJK字符。

EBCDIC

扩展二进制编码十进制交换码。IBM大型机编码,字母范围不连续,至今仍用于银行和企业大型机。

EUC-KR

基于KS X 1001的韩语字符编码,将韩文音节和汉字映射为双字节序列。

GB2312 / GB18030

简体中文字符编码系列:GB2312(6,763字)经GBK演化为GB18030,成为与Unicode兼容的中国强制性国家标准。

IANA 字符集

由IANA维护的字符编码名称官方注册表,用于HTTP Content-Type头和MIME(如charset=utf-8)。

ISO 8859

针对不同语言组的8位单字节编码系列,ISO 8859-1(Latin-1)是Unicode前256个码位的基础。

Shift JIS

将单字节ASCII/JIS罗马字与双字节JIS X 0208汉字相结合的日语字符编码,仍在传统日语系统中使用。

UCS-2

仅覆盖BMP(U+0000–U+FFFF)的废弃固定2字节编码,是UTF-16的前身,无法表示补充字符。

UTF-16

使用1或2个16位码元(2或4字节)的可变长度Unicode编码,在Java、JavaScript和Windows内部使用。

UTF-32

每字符固定使用4字节的Unicode编码,简单但空间效率低,在Python 3(CPython)内部使用。

UTF-8

每字符使用1至4字节的可变长度Unicode编码,是Web的主流编码(超过98%的网站),并与ASCII完全向后兼容。

Windows-1252

微软对ISO 8859-1的超集,在0x80–0x9F范围内增加了弯引号、破折号和欧元符号,是最常见的传统拉丁编码。

字符编码

将字符映射为字节序列以供数字存储和传输的系统。每个文本文件都有编码,关键在于是否正确声明了该编码。

字节顺序标记 (BOM)

放置在文本流开头以指示字节序和编码的U+FEFF。对UTF-16/32是必需的,对UTF-8是可选的且不推荐使用。

Unicode 标准 (25)

CJK(中日韩)

中日韩——Unicode中统一汉字区块及相关文字系统的统称,CJK统一表意文字包含20,992个以上字符。

Han Unification

The process of mapping Chinese, Japanese, and Korean ideographs that share a common historical origin to a single Unicode code …

Hangul Jamo

The individual consonant and vowel components (jamo) of the Korean Hangul writing system. Unicode encodes both precomposed Hangul syllables (U+AC00–U+D7A3) …

ISO 10646 / 通用字符集

与Unicode同步的国际标准(ISO/IEC 10646),定义相同的字符集和码位,但不包含Unicode额外的算法和属性。

Unicode

为每种书写系统中的每个字符分配唯一编号(码位)的通用字符编码标准,16.0版本包含154,998个已分配字符。

Unicode Standard Annex (UAX)

Normative or informative documents that are integral parts of the Unicode Standard. UAX#9 (Bidi Algorithm), UAX#11 (East Asian Width), UAX#15 …

Unicode Technical Report (UTR)

Informational documents published by the Unicode Consortium covering specific topics like security mechanisms (UTR#39), text segmentation (UTR#29), and line breaking …

Unicode 字符数据库 (UCD)

定义所有Unicode字符属性的机器可读数据文件集合,包括UnicodeData.txt、Blocks.txt、Scripts.txt等。

Unicode 标量值

除代理码位(U+D800–U+DFFF)之外的所有码位,是可表示实际字符的有效值集合,共1,112,064个。

Unicode 版本

Unicode标准的主要版本,每次发布均新增字符、文字系统和功能,当前版本为Unicode 16.0(2025年9月)。

Unicode 稳定性策略

保证字符一旦分配,其码位和名称永不更改的策略。属性可以精化,但分配是永久性的。

Unicode 联盟

开发和维护Unicode标准的非营利组织,成员包括Apple、Google、Microsoft、Meta等。

代理项

专为UTF-16代理对保留的码位U+D800–U+DFFF,不是有效的Unicode标量值,不应作为独立字符出现。

保留码位

为未来标准化预留的码位,有别于非字符(永久保留)和私用区域(用户可分配)。

基本多文种平面 (BMP)

第0平面(U+0000–U+FFFF),包含最常用的字符,如拉丁、希腊、西里尔、CJK、阿拉伯字符及大多数符号,此平面的字符可用单个UTF-16码元表示。

已分配字符

在某个Unicode版本中已被赋予字符指定的码位。截至Unicode 16.0,1,114,112个码位中有154,998个已被分配。

平面

由65,536个连续码位构成的区块。Unicode有17个平面(0–16):第0平面是BMP,第1平面是SMP(表情符号、历史文字),第2平面是SIP(CJK扩展)。

抽象字符

用于组织、控制或表示文本数据的信息单位,是在获得码位之前的概念性实体。

未分配码位

在任何Unicode版本中均未分配字符的码位,归类为Cn(未分配),可能在未来版本中被分配。

码位

Unicode码空间(U+0000至U+10FFFF)中的数值,写作U+XXXX,并非所有码位都已分配字符。

码元

编码的最小单位:UTF-8中为8位字节,UTF-16中为16位字,UTF-32中为32位字。一个字符可能需要多个码元。

码空间

所有可能的Unicode码位范围:U+0000至U+10FFFF(共1,114,112个),分为17个平面,每个平面含65,536个码位。

私用区域 (PUA)

供组织分配自有字符的保留区域,包括BMP私用区(U+E000–U+F8FF)以及第15和第16平面中的补充私用区。

补充平面 / 星光平面

第1至16平面(U+10000–U+10FFFF),包含表情符号、历史文字、CJK扩展和乐谱等,在UTF-16中需要代理对表示。

非字符

永久保留供内部使用的码位(共66个):各平面的U+FDD0–U+FDEF及U+nFFFE/U+nFFFF。在文本中有效,但不应对外交换。

字符属性 (19)

Age 属性

字符首次被分配时所在的Unicode版本,有助于判断各系统和软件版本的字符支持情况。

East Asian Width

Unicode property (UAX#11) classifying characters as Narrow, Wide, Fullwidth, Halfwidth, Ambiguous, or Neutral. Wide characters (CJK ideographs, katakana) occupy two …

Joining Type

Unicode property controlling how Arabic and Syriac characters connect to adjacent characters. Types include Right_Joining, Left_Joining, Dual_Joining, and Non_Joining.

Script Extensions

Unicode property listing all scripts that use a character, broader than the single-valued Script property. Common characters like digits have …

一般类别

将每个码位归入30个类别(Lu、Ll、Nd、So等)之一的分类体系,分为7大类:字母、标记、数字、标点、符号、分隔符和其他。

兼容等价

具有相同抽象内容但外观可能不同的两个字符序列,比规范等价更宽泛,例如fi ≈ fi,² ≈ 2。

分解

将字符映射为其组成部分的过程。规范分解保留语义(é → e + ◌́),兼容分解可能改变语义(fi → fi)。

区块

命名的连续码位范围(如基本拉丁文 = U+0000–U+007F)。Unicode 16.0定义了336个区块,每个码位恰好属于一个区块。

双向类别

决定字符在双向文本中(LTR、RTL、弱、中性)行为方式的属性,由Unicode双向算法用于确定显示顺序。

名称别名

由于稳定性策略规定Unicode名称不可更改,因此提供字符的备用名称,用于更正、缩写和别名。

大小写映射

将字符在大写、小写和标题大小写之间转换的规则,可能因区域设置而异(土耳其语I问题),也存在一对多映射(ß → SS)。

扩展字素簇

用户感知的“字符”——感觉上是单个单位,可由多个码位组成(基字符加组合标记,或表情符号ZWJ序列)。👩‍💻 = 3个码位,1个字素。

数字值

字符的数值解释(如适用):数字值(0–9)、十进制值或一般数字值(如½ = 0.5,Ⅳ = 4)。

文字系统

字符所属的书写系统(如拉丁文、西里尔文、汉字)。Unicode 16.0定义了168种文字系统,Script属性是安全检测和混合文字系统检测的关键。

标点符号

用于组织和阐明书面语言的字符,包括句号、逗号、破折号、引号等,Unicode一般类别P涵盖所有标点符号。

组合类

控制正则分解过程中组合标记排序的数值(0–254),决定哪些组合标记可以重新排序。

规范等价

语义上完全相同、应被视为等价的两个字符序列,例如é(U+00E9)≡ e + ◌́(U+0065 + U+0301)。

镜像属性

在RTL上下文中字形应水平翻转的字符,例如 ( → )、[ → ]、{ → }、« → »。

默认可忽略字符

在不支持它们的处理过程中无可见效果、可被忽略的字符,包括变体选择符、零宽字符和语言标签。

算法 (15)

Case Folding

Mapping characters to a common case form for case-insensitive comparison. More comprehensive than lowercasing: German ß → ss, Turkish İ …

Grapheme Cluster Boundary

Rules (UAX#29) for determining where one user-perceived character ends and another begins. Critical for cursor movement, text selection, and correctly …

NFC (Canonical Composition)

规范化形式C:先分解再规范合成,生成最短形式,推荐用于数据存储和交换,是Web标准形式。

NFD (Canonical Decomposition)

规范化形式D:完全分解而不重新合成,macOS HFS+文件系统使用此形式。é(U+00E9)→ e + ◌́(U+0065 + U+0301)。

NFKC (Compatibility Composition)

规范化形式KC:兼容分解后再规范合成,合并视觉上相似的字符(fi→fi、²→2、Ⅳ→IV),用于标识符比较。

NFKD (Compatibility Decomposition)

规范化形式KD:兼容分解而不重新合成,是最激进的规范化方式,会丢失最多的格式信息。

String Comparison

Comparing Unicode strings requires normalization (NFC/NFD) and optionally collation (locale-aware sorting). Binary comparison of code points alone gives incorrect results …

Unicode 双向算法 (UBA)

利用字符双向类别和明确方向覆盖,确定混合方向文本(如英语+阿拉伯语)显示顺序的算法。

Unicode 换行算法

根据字符属性、CJK词边界和换行时机,确定文本可换至下一行位置的规则。

Unicode 排序算法 (UCA)

通过多级比较(基础字符→变音符号→大小写→决胜符)对Unicode字符串进行比较和排序的标准算法,支持区域设置自定义。

Unicode 文本分割

查找文本中各类边界的算法:字素簇、词和句子边界,对光标移动、文本选择和文本处理至关重要。

Unicode 规范化

将Unicode文本转换为标准规范形式的过程,包含四种形式:NFC(合成)、NFD(分解)、NFKC(兼容合成)、NFKD(兼容分解)。

句子边界

按照Unicode规则确定的句子间位置,比按句号分割更复杂,能正确处理缩写(Mr.)、省略号(...)和小数点(3.14)。

合成排除

为防止非首位分解并确保算法稳定性而从规范合成(NFC)中排除的字符,列于CompositionExclusions.txt中。

词边界

由Unicode词边界规则确定的词间位置,不是简单地按空格分割,而是正确处理CJK(无空格)、缩写和数字。

排版印刷 (19)

CSS unicode-range

CSS @font-face descriptor specifying which Unicode code points a font should cover. Enables downloading only the font subset needed for …

Font Fallback

The mechanism by which a rendering engine substitutes glyphs from a secondary font when the primary font lacks coverage for …

OpenType

Modern font format developed by Microsoft and Adobe supporting up to 65,535 glyphs, advanced typographic features (ligatures, alternates, kerning), and …

RTL(从右到左)

字符从右向左流动的文本方向,用于阿拉伯语、希伯来语、塔阿纳等文字,正确显示需要双向算法。

Web Fonts

Fonts downloaded by the browser to render text, declared via CSS @font-face. WOFF2 is the standard format. Unicode subsetting and …

不换行空格

U+00A0,防止在该位置换行的空格。HTML中为 ,用于数字与单位之间(100 km)、专有名词(Mr. Smith)和缩写之后。

全角 / 半角(排版单位)

全角(Em):等于字号的宽度;半角(En):全角的一半,用于定义全角破折号宽度、全角空格、半角空格和CSS单位(1em、0.5em)。

变音符号 / 附加符号

附加在字母上以改变发音或意义的符号,可以是预组合形式(é U+00E9)或组合形式(e + ◌́ U+0065+U+0301),包括重音、变音符、软音符和波浪号等。

字体

特定大小、字重和样式的字型实现,在数字排版中指包含字形定义和度量的字体文件(TTF、OTF、WOFF2)。

字形

字体渲染的字符视觉表现形式。一个字符可有多个字形(连字、上下文形式),一个字形也可表示多个字符。

字距调整

为视觉美观而调整特定字符对(如AV、To、LT)之间间距的操作,是字体特性而非Unicode概念,但会影响Unicode文本的渲染。

小型大写字母

高度与小写字母相同的大写字形,CSS写法为font-variant: small-caps,Unicode在拉丁扩展区(ᴀ–ᴢ)中也有实际的小型大写字母。

引号

括住直接引语或引文的成对标点,Unicode包含直角引号(″″)、弯引号()、书名号(« »)、CJK角括号(「」)及各地区特定形式。

省略号

U+2026水平省略号(…),代替三个句号的单个字符,排版上更规范,计为1个字符而非3个。

破折号

用于分隔句子部分或表示范围的标点,Unicode定义了多种破折号:连字符(‐)、半角破折号(–)、全角破折号(—)、数字破折号(‒)等。

空白字符

表示水平或垂直空间但无可见字形的字符,Unicode定义了17种以上具有不同宽度和换行行为的空白字符。

组合字符

附着在前一个基字符上并修改它的字符,一般类别为Mn(非空白)、Mc(空白组合)、Me(包围),例如◌́(U+0301组合锐音符)。

连字

将两个或多个字符合并为一个字形,可以是排版连字(通过OpenType的fi → fi)或Unicode字符(fi U+FB01)。阿拉伯文字使用强制连字。

零宽字符

前进宽度为零的字符——在渲染中不可见但影响文本行为,包括ZWSP(词边界)、ZWJ(连接)、ZWNJ(阻止连接)和WJ(阻止换行)。

输入法 (9)

Alt 代码

Windows输入法,通过Alt+数字键盘数字按代码页编号输入字符(Alt+0169 → ©,Alt+0176 → °),仅限代码页1252中的字符。

Character Palette

A system-level tool for browsing and inserting Unicode characters. macOS Character Viewer (Ctrl+Cmd+Space), Windows Character Map (charmap.exe), and Linux gucharmap …

Unicode 输入法

通过Unicode码位输入字符的任何方法:十六进制输入(Mac)、Ctrl+Shift+U输入U+XXXX(Linux)或Alt+X(Windows应用程序)。

十六进制输入

通过输入十六进制值直接输入Unicode码位的方法。Mac:按住Option+十六进制值+松开;Windows:在Word/WordPad中输入十六进制后按Alt+X。

字符映射表

用于浏览和插入Unicode字符的图形工具。Windows:charmap.exe;Mac:字符查看器(Control+Command+Space);Linux:gucharmap。

字符选取器

用于可视化浏览和选择字符的UI组件(原生或网页版),移动端的表情符号选取器是最常见的例子。

死键

按下后不立即输出但会修饰下一次击键的按键,用于输入变音符号:按下`再按e可输入è,常见于欧洲键盘布局。

组合键

启动多键组合序列的按键(通常为右Alt或自定义映射),是Linux/Unix功能:Compose + a + e → æ,可通过XCompose配置。

输入法编辑器 (IME)

通过拼音或字形匹配将按键序列转换为字符的软件组件,使用户能够用标准键盘输入复杂字符(如CJK、韩文等)。

网页与 HTML (16)

Content-Type 字符集

声明响应字符编码的HTTP头参数(Content-Type: text/html; charset=utf-8),优先级高于文档内的编码声明。

CSS content 属性

通过::before和::after伪元素使用Unicode转义插入生成内容的CSS属性:content: '\2713'可插入✓。

CSS Text Direction

CSS properties (direction, writing-mode, unicode-bidi) controlling text layout direction. Works with Unicode Bidi Algorithm for mixed LTR/RTL content in web …

HTML 实体

HTML中字符的文本表示方式,有三种形式:命名(&)、十进制(&)、十六进制(&),对于与HTML语法冲突的字符是必需的。

JavaScript Intl API

ECMAScript Internationalization API providing locale-aware string comparison (Collator), number formatting (NumberFormat), date formatting (DateTimeFormat), and segmentation (Segmenter).

Punycode

将Unicode域名转换为xn--前缀ASCII字符串的ASCII兼容编码,例如münchen.de → xn--mnchen-3ya.de。

Unicode in CSS

CSS supports Unicode via escape sequences (\2713 for ✓), the content property for generated text, unicode-range for font subsetting, and …

XML 字符引用

XML版本的数字字符引用:✓或✓,XML只有5个命名实体(& < > " '),而HTML5有2,231个。

变体选择符

选择特定字形变体的字符(U+FE00–U+FE0F、U+E0100–U+E01EF),VS15(U+FE0E)表示文本呈现,VS16(U+FE0F)表示表情符号呈现。

命名字符引用

使用人类可读名称的HTML实体:© → ©,— → —。HTML5定义了2,231个命名引用,且区分大小写。

国际化域名 (IDN)

包含非ASCII Unicode字符的域名,内部以Punycode(xn--...)存储,但向用户显示为Unicode,安全隐患:同形字攻击。

数字字符引用

使用Unicode码位编号的HTML实体:十进制(© → ©)或十六进制(© → ©),与命名引用不同,可用于任何Unicode字符。

文本呈现

通常使用变体选择符15(U+FE0E)将字符渲染为纯单色文本字形,而非彩色的表情符号默认呈现。

百分号编码(URL 编码)

将URL中的非ASCII字符和保留字符替换为%XX编码,先转为UTF-8字节再对每个字节进行百分号编码:é → %C3%A9。

表情符号呈现

通常使用变体选择符16(U+FE0F)将字符渲染为彩色表情符号字形,部分字符默认以表情符号呈现,其他则默认以文本呈现。

词语连接符

U+2060,防止换行的零宽字符,是U+FEFF(BOM)作为零宽不换行空格的现代替代品。

编程与开发 (13)

Java Unicode

Java strings use UTF-16 internally. char is 16-bit (only BMP). For supplementary characters, use codePointAt() and Character.toChars(). Java's \uXXXX escapes …

Python Unicode

Python 3 uses Unicode strings by default (str = UTF-8 internally via PEP 393). Key features: \N{name} escapes, unicodedata module, …

Rust Unicode

Rust strings (str/String) are guaranteed valid UTF-8. char type represents a Unicode scalar value (4 bytes). Iteration via .chars() yields …

Unicode 正则表达式

使用Unicode属性的正则表达式模式:\p{L}(任意字母)、\p{Script=Greek}(希腊文字)、\p{Emoji},各语言和正则引擎的支持程度不同。

Unicode 转义序列

在源代码中表示Unicode字符的语法,各语言不同:\u2713(Python/Java/JS)、\u{2713}(JS/Ruby/Rust)、\U00012345(Python/C)。

不可见字符

无可见字形的字符:空白、零宽字符、控制字符和格式字符,可能引发欺骗和文本隐写等安全问题。

乱码

用错误编码解码字节时产生的乱码文本,来自日语词“文字化け”。例如:'café'以UTF-8存储但用Latin-1读取,显示为'café'。

代理对

在UTF-16中一起编码补充字符的两个16位码元(高代理U+D800–U+DBFF + 低代理U+DC00–U+DFFF),😀 = D83D DE00。

字符串

编程语言中的字符序列,内部表示各异:UTF-8(Go、Rust、新版Python)、UTF-16(Java、JavaScript、C#)或UTF-32(Python)。

字符串长度歧义

Unicode字符串的“长度”取决于计量单位:码元(JavaScript .length)、码位(Python len())或字素簇。👨‍👩‍👧‍👦 = 7个码位,1个字素。

替换字符

U+FFFD(�),解码器遇到无效字节序列时显示的字符——“解码出错”的通用符号。

空字符

U+0000(NUL),第一个Unicode/ASCII字符,在C/C++中用作字符串终止符,安全隐患:空字节注入可能在易受攻击的系统中截断字符串。

编码 / 解码

编码将字符转换为字节(str.encode('utf-8')),解码将字节转换为字符(bytes.decode('utf-8')),正确处理可防止乱码。

安全 (10)

Bidi Text Attack

Exploiting Unicode bidirectional control characters to disguise malicious code or filenames. The 'Trojan Source' attack (CVE-2021-42574) uses bidi overrides to …

IDN 同形字攻击

在域名中使用视觉上相似的Unicode字符来冒充合法网站的攻击,аpple.com(西里尔а)看起来像apple.com,浏览器通过Punycode显示规则加以防范。

Normalization Attack

Exploiting Unicode normalization to bypass security filters. Input validated before normalization may change form after: 'fi' (U+FB01) normalizes to 'fi', …

Unicode 欺骗

利用Unicode功能欺骗用户:同形字用于假冒域名,双向覆盖用于伪造文件扩展名,不可见字符用于隐藏文本。

双向覆盖攻击

利用Unicode双向覆盖字符(U+202A–U+202E、U+2066–U+2069)伪装恶意文件名或代码的攻击,'readme‮fdp.exe'显示为'readmeexe.pdf'。

同形字

来自不同文字系统但外观相同或非常相似的字符,如拉丁'a'与西里尔'а',用于网络钓鱼、欺骗和社会工程学攻击。

易混淆字符

Unicode对视觉上可能混淆的字符对的官方术语,定义于confusables.txt(UCD),比同形字范围更广,包含仅仅相似而非完全相同的字符。

混合文字系统检测

识别混合不同文字系统字符的文本(如拉丁文+西里尔文),是防御同形字攻击的主要手段,浏览器据此触发Punycode显示。

零宽连接符 (ZWJ)

U+200D,请求相邻字符连接,是表情符号序列的关键(👩+ZWJ+💻=👩‍💻),在印度文字中请求形成连字,也可用于隐藏文本边界。

零宽非连接符 (ZWNJ)

U+200C,阻止相邻字符连接,在波斯语/阿拉伯语中对正确字母形式是必需的,也用于梵文中阻止连字。

表情符号 (6)

其他 (1)