Unicode 词汇表
150 个 Unicode 核心术语详解——从字符编码基础到安全概念。
编码 (17)
美国信息交换标准代码。7位编码,涵盖128个字符(0–127),包括控制字符、数字、拉丁字母和基本符号。
Visual art created from text characters, originally limited to the 95 printable ASCII characters. Unicode expands the palette with box-drawing …
Binary-to-text encoding that represents binary data using 64 ASCII characters (A–Z, a–z, 0–9, +, /). Used for embedding binary data …
主要在台湾和香港使用的繁体中文字符编码,收录约13,000个CJK字符。
扩展二进制编码十进制交换码。IBM大型机编码,字母范围不连续,至今仍用于银行和企业大型机。
基于KS X 1001的韩语字符编码,将韩文音节和汉字映射为双字节序列。
简体中文字符编码系列:GB2312(6,763字)经GBK演化为GB18030,成为与Unicode兼容的中国强制性国家标准。
由IANA维护的字符编码名称官方注册表,用于HTTP Content-Type头和MIME(如charset=utf-8)。
针对不同语言组的8位单字节编码系列,ISO 8859-1(Latin-1)是Unicode前256个码位的基础。
将单字节ASCII/JIS罗马字与双字节JIS X 0208汉字相结合的日语字符编码,仍在传统日语系统中使用。
仅覆盖BMP(U+0000–U+FFFF)的废弃固定2字节编码,是UTF-16的前身,无法表示补充字符。
使用1或2个16位码元(2或4字节)的可变长度Unicode编码,在Java、JavaScript和Windows内部使用。
每字符固定使用4字节的Unicode编码,简单但空间效率低,在Python 3(CPython)内部使用。
每字符使用1至4字节的可变长度Unicode编码,是Web的主流编码(超过98%的网站),并与ASCII完全向后兼容。
微软对ISO 8859-1的超集,在0x80–0x9F范围内增加了弯引号、破折号和欧元符号,是最常见的传统拉丁编码。
将字符映射为字节序列以供数字存储和传输的系统。每个文本文件都有编码,关键在于是否正确声明了该编码。
放置在文本流开头以指示字节序和编码的U+FEFF。对UTF-16/32是必需的,对UTF-8是可选的且不推荐使用。
Unicode 标准 (25)
中日韩——Unicode中统一汉字区块及相关文字系统的统称,CJK统一表意文字包含20,992个以上字符。
The process of mapping Chinese, Japanese, and Korean ideographs that share a common historical origin to a single Unicode code …
The individual consonant and vowel components (jamo) of the Korean Hangul writing system. Unicode encodes both precomposed Hangul syllables (U+AC00–U+D7A3) …
与Unicode同步的国际标准(ISO/IEC 10646),定义相同的字符集和码位,但不包含Unicode额外的算法和属性。
为每种书写系统中的每个字符分配唯一编号(码位)的通用字符编码标准,16.0版本包含154,998个已分配字符。
Normative or informative documents that are integral parts of the Unicode Standard. UAX#9 (Bidi Algorithm), UAX#11 (East Asian Width), UAX#15 …
Informational documents published by the Unicode Consortium covering specific topics like security mechanisms (UTR#39), text segmentation (UTR#29), and line breaking …
定义所有Unicode字符属性的机器可读数据文件集合,包括UnicodeData.txt、Blocks.txt、Scripts.txt等。
除代理码位(U+D800–U+DFFF)之外的所有码位,是可表示实际字符的有效值集合,共1,112,064个。
Unicode标准的主要版本,每次发布均新增字符、文字系统和功能,当前版本为Unicode 16.0(2025年9月)。
保证字符一旦分配,其码位和名称永不更改的策略。属性可以精化,但分配是永久性的。
开发和维护Unicode标准的非营利组织,成员包括Apple、Google、Microsoft、Meta等。
专为UTF-16代理对保留的码位U+D800–U+DFFF,不是有效的Unicode标量值,不应作为独立字符出现。
为未来标准化预留的码位,有别于非字符(永久保留)和私用区域(用户可分配)。
第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个码位。
供组织分配自有字符的保留区域,包括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)
字符首次被分配时所在的Unicode版本,有助于判断各系统和软件版本的字符支持情况。
Unicode property (UAX#11) classifying characters as Narrow, Wide, Fullwidth, Halfwidth, Ambiguous, or Neutral. Wide characters (CJK ideographs, katakana) occupy two …
Unicode property controlling how Arabic and Syriac characters connect to adjacent characters. Types include Right_Joining, Left_Joining, Dual_Joining, and Non_Joining.
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)
Mapping characters to a common case form for case-insensitive comparison. More comprehensive than lowercasing: German ß → ss, Turkish İ …
Rules (UAX#29) for determining where one user-perceived character ends and another begins. Critical for cursor movement, text selection, and correctly …
规范化形式C:先分解再规范合成,生成最短形式,推荐用于数据存储和交换,是Web标准形式。
规范化形式D:完全分解而不重新合成,macOS HFS+文件系统使用此形式。é(U+00E9)→ e + ◌́(U+0065 + U+0301)。
规范化形式KC:兼容分解后再规范合成,合并视觉上相似的字符(fi→fi、²→2、Ⅳ→IV),用于标识符比较。
规范化形式KD:兼容分解而不重新合成,是最激进的规范化方式,会丢失最多的格式信息。
Comparing Unicode strings requires normalization (NFC/NFD) and optionally collation (locale-aware sorting). Binary comparison of code points alone gives incorrect results …
利用字符双向类别和明确方向覆盖,确定混合方向文本(如英语+阿拉伯语)显示顺序的算法。
根据字符属性、CJK词边界和换行时机,确定文本可换至下一行位置的规则。
通过多级比较(基础字符→变音符号→大小写→决胜符)对Unicode字符串进行比较和排序的标准算法,支持区域设置自定义。
查找文本中各类边界的算法:字素簇、词和句子边界,对光标移动、文本选择和文本处理至关重要。
将Unicode文本转换为标准规范形式的过程,包含四种形式:NFC(合成)、NFD(分解)、NFKC(兼容合成)、NFKD(兼容分解)。
按照Unicode规则确定的句子间位置,比按句号分割更复杂,能正确处理缩写(Mr.)、省略号(...)和小数点(3.14)。
为防止非首位分解并确保算法稳定性而从规范合成(NFC)中排除的字符,列于CompositionExclusions.txt中。
由Unicode词边界规则确定的词间位置,不是简单地按空格分割,而是正确处理CJK(无空格)、缩写和数字。
排版印刷 (19)
CSS @font-face descriptor specifying which Unicode code points a font should cover. Enables downloading only the font subset needed for …
The mechanism by which a rendering engine substitutes glyphs from a secondary font when the primary font lacks coverage for …
Modern font format developed by Microsoft and Adobe supporting up to 65,535 glyphs, advanced typographic features (ligatures, alternates, kerning), and …
字符从右向左流动的文本方向,用于阿拉伯语、希伯来语、塔阿纳等文字,正确显示需要双向算法。
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)
Windows输入法,通过Alt+数字键盘数字按代码页编号输入字符(Alt+0169 → ©,Alt+0176 → °),仅限代码页1252中的字符。
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码位输入字符的任何方法:十六进制输入(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配置。
通过拼音或字形匹配将按键序列转换为字符的软件组件,使用户能够用标准键盘输入复杂字符(如CJK、韩文等)。
网页与 HTML (16)
声明响应字符编码的HTTP头参数(Content-Type: text/html; charset=utf-8),优先级高于文档内的编码声明。
通过::before和::after伪元素使用Unicode转义插入生成内容的CSS属性:content: '\2713'可插入✓。
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语法冲突的字符是必需的。
ECMAScript Internationalization API providing locale-aware string comparison (Collator), number formatting (NumberFormat), date formatting (DateTimeFormat), and segmentation (Segmenter).
将Unicode域名转换为xn--前缀ASCII字符串的ASCII兼容编码,例如münchen.de → xn--mnchen-3ya.de。
CSS supports Unicode via escape sequences (\2713 for ✓), the content property for generated text, unicode-range for font subsetting, and …
XML版本的数字字符引用:✓或✓,XML只有5个命名实体(& < > " '),而HTML5有2,231个。
选择特定字形变体的字符(U+FE00–U+FE0F、U+E0100–U+E01EF),VS15(U+FE0E)表示文本呈现,VS16(U+FE0F)表示表情符号呈现。
使用人类可读名称的HTML实体:© → ©,— → —。HTML5定义了2,231个命名引用,且区分大小写。
包含非ASCII Unicode字符的域名,内部以Punycode(xn--...)存储,但向用户显示为Unicode,安全隐患:同形字攻击。
使用Unicode码位编号的HTML实体:十进制(© → ©)或十六进制(© → ©),与命名引用不同,可用于任何Unicode字符。
通常使用变体选择符15(U+FE0E)将字符渲染为纯单色文本字形,而非彩色的表情符号默认呈现。
将URL中的非ASCII字符和保留字符替换为%XX编码,先转为UTF-8字节再对每个字节进行百分号编码:é → %C3%A9。
通常使用变体选择符16(U+FE0F)将字符渲染为彩色表情符号字形,部分字符默认以表情符号呈现,其他则默认以文本呈现。
U+2060,防止换行的零宽字符,是U+FEFF(BOM)作为零宽不换行空格的现代替代品。
编程与开发 (13)
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 3 uses Unicode strings by default (str = UTF-8 internally via PEP 393). Key features: \N{name} escapes, unicodedata module, …
Rust strings (str/String) are guaranteed valid UTF-8. char type represents a Unicode scalar value (4 bytes). Iteration via .chars() yields …
使用Unicode属性的正则表达式模式:\p{L}(任意字母)、\p{Script=Greek}(希腊文字)、\p{Emoji},各语言和正则引擎的支持程度不同。
在源代码中表示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)
Exploiting Unicode bidirectional control characters to disguise malicious code or filenames. The 'Trojan Source' attack (CVE-2021-42574) uses bidi overrides to …
在域名中使用视觉上相似的Unicode字符来冒充合法网站的攻击,аpple.com(西里尔а)看起来像apple.com,浏览器通过Punycode显示规则加以防范。
Exploiting Unicode normalization to bypass security filters. Input validated before normalization may change form after: 'fi' (U+FB01) normalizes to 'fi', …
利用Unicode功能欺骗用户:同形字用于假冒域名,双向覆盖用于伪造文件扩展名,不可见字符用于隐藏文本。
利用Unicode双向覆盖字符(U+202A–U+202E、U+2066–U+2069)伪装恶意文件名或代码的攻击,'readmefdp.exe'显示为'readmeexe.pdf'。
来自不同文字系统但外观相同或非常相似的字符,如拉丁'a'与西里尔'а',用于网络钓鱼、欺骗和社会工程学攻击。
Unicode对视觉上可能混淆的字符对的官方术语,定义于confusables.txt(UCD),比同形字范围更广,包含仅仅相似而非完全相同的字符。
识别混合不同文字系统字符的文本(如拉丁文+西里尔文),是防御同形字攻击的主要手段,浏览器据此触发Punycode显示。
U+200D,请求相邻字符连接,是表情符号序列的关键(👩+ZWJ+💻=👩💻),在印度文字中请求形成连字,也可用于隐藏文本边界。
U+200C,阻止相邻字符连接,在波斯语/阿拉伯语中对正确字母形式是必需的,也用于梵文中阻止连字。
表情符号 (6)
起源于日本手机的图形Unicode字符,现有3,790多个表情符号分布在多个区块(表情、杂项符号与象形文字、交通等)。
Multi-character emoji constructed by combining base emoji with modifiers, ZWJ characters, or variation selectors. Types include keycap sequences (#️⃣), flag …
Five Fitzpatrick scale modifiers (U+1F3FB–U+1F3FF, 🏻–🏿) that change human emoji skin color. Applied by appending the modifier after a base …
26个字符(U+1F1E6–U+1F1FF,🇦–🇿),按照ISO 3166-1国家代码成对组合形成国旗表情符号,🇺+🇸 = 🇺🇸。
由多个表情符号通过零宽连接符(U+200D)组合而成的表情符号,👨👩👧👦 = 男人+ZWJ+女人+ZWJ+女孩+ZWJ+男孩,目前定义了约600个ZWJ序列。
紧跟在人形表情符号后面以改变肤色的菲茨帕特里克色度修饰符(U+1F3FB–U+1F3FF)。