Unicode 标准

已分配字符

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

· Updated

What is an Assigned Character?

An assigned character is a Unicode code point that has been given a formal designation in the Unicode Standard — it represents a specific character, symbol, or abstract entity with an official name, category, and set of properties. The Unicode Consortium adds new assigned characters in each version of the standard; once a code point is assigned, it is permanently assigned and the assignment is never revoked or changed.

As of Unicode 16.0, approximately 154,998 code points are assigned characters out of the 1,114,112 total code space.

What Makes a Code Point "Assigned"

A code point is assigned when the Unicode Consortium:

  1. Gives it a normative character name (e.g., LATIN SMALL LETTER A, SNOWMAN, GRINNING FACE)
  2. Assigns it a General Category (letter, number, punctuation, symbol, etc.)
  3. Defines its relevant character properties in the Unicode Character Database

The formal assignment appears in UnicodeData.txt — the primary UCD file. Any code point with an entry in that file (other than range sentinels) is assigned.

Categories of Assigned Characters

Assigned characters are not all printable glyphs. The Unicode Standard assigns code points to:

Category Examples General Category Code
Letters A, a, α, あ, 字 Lu, Ll, Lo...
Digits 0–9, ², ③ Nd, Nl, No
Punctuation . , ! « » Po, Ps, Pe...
Symbols €, ©, ★, ☃, 😀 So, Sm, Sc, Sk
Marks combining acute ◌́ Mn, Mc, Me
Separators space, line separator Zs, Zl, Zp
Control codes U+0009 TAB, U+000A LF Cc
Format characters U+200C ZWNJ, U+FEFF BOM Cf

Even control characters like TAB, LF, and NULL (U+0000) are assigned characters — they have official names and category Cc (Control).

Checking Assignment Status

import unicodedata

def is_assigned(char: str) -> bool:
    # Cn = Unassigned; Co = Private Use; Cs = Surrogate
    # All other categories indicate assigned characters
    cat = unicodedata.category(char)
    return cat not in ("Cn",)  # Cn = not assigned

# Assigned characters
print(is_assigned("A"))      # True — Lu (Uppercase Letter)
print(is_assigned("😀"))     # True — So (Other Symbol)
print(is_assigned("\t"))     # True — Cc (Control)
print(is_assigned("\uE001")) # True — Co (Private Use — assigned category, user-defined)

# Unassigned
print(is_assigned("\u0378")) # False — Cn (Unassigned)

# Get character name
print(unicodedata.name("A"))      # LATIN CAPITAL LETTER A
print(unicodedata.name("😀"))     # GRINNING FACE
print(unicodedata.name("\t"))     # HORIZONTAL TABULATION

Stability of Assignments

The Unicode Stability Policy guarantees that once a code point is assigned: - Its character name is permanent (corrections become formal aliases, not replacements) - Its General Category will not change in ways that break normalization or sorting - Its decomposition mapping will not change - The code point will never be unassigned or reassigned to a different character

This stability is essential for backward compatibility: text files created with Unicode 1.0 can still be read correctly with Unicode 16.0 implementations.

Growth Over Versions

Version Year Assigned Characters
1.0 1991 7,129
3.0 1999 49,194
5.0 2006 99,024
8.0 2015 120,737
12.0 2019 137,994
15.0 2022 149,186
16.0 2024 154,998

Quick Facts

Property Value
Total assigned (v16.0) 154,998
Percentage of code space ~13.9%
Earliest assigned U+0000–U+007F (ASCII, Unicode 1.0)
General category for unassigned Cn
Stability guarantee Never unassigned or reassigned
Primary source file UnicodeData.txt
Includes control characters? Yes (U+0000–U+001F, U+007F, U+0080–U+009F)

相关术语

Unicode 标准 中的更多内容