Chữ số (numeral) trong Unicode là bất kỳ ký tự nào đại diện cho một giá trị số. Mặc dù hầu hết thế giới quen thuộc với các chữ số 0–9, Unicode 17.0 (2025) bao gồm 22 bộ chữ số thập phân khác nhau từ các hệ thống chữ viết trên toàn cầu, cùng hàng trăm biến thể typographic và hệ thống số cổ đại.
Mục lục
Unicode phân loại mọi ký tự số theo Numeric Type property, gồm 4 giá trị:
| Loại | Mã | Có giá trị số | Ví dụ | Ghi chú |
|---|---|---|---|---|
| Không phải số | |
Không | A, X, !, Д, μ | Numeric Value = NaN |
| Decimal | De |
Có | 0–9, ६ (Devanagari 6), ೬ (Kannada 6), 𝟨 (sans-serif) | Chữ số thập phân thuần, trùng General Category = Nd |
| Digit | Di |
Có | ¹ (superscript), ①, ⒈ | Thập phân nhưng trong ngữ cảnh typographic |
| Numeric | Nu |
Có | ¾, ௰ (Tamil 10), Ⅹ (La Mã), 六 (Hán) | Có giá trị số nhưng không phải hệ thập phân |
Nguồn: Unicode Standard, Section 4.6: Numeric Value; Unicode Character Database 2025-06-30.
Hệ Hindu-Arabic là nền tảng, nhưng Unicode encode lại chữ số 0–9 cho 22 hệ chữ viết độc lập. Dưới đây là một số bộ tiêu biểu:
| Script | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| Western Arabic (ASCII) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| Eastern Arabic | ٠ | ١ | ٢ | ٣ | ٤ | ٥ | ٦ | ٧ | ٨ | ٩ |
| Devanagari | ० | १ | २ | ३ | ४ | ५ | ६ | ७ | ८ | ९ |
| Thai | ๐ | ๑ | ๒ | ๓ | ๔ | ๕ | ๖ | ๗ | ๘ | ๙ |
| Khmer | ០ | ១ | ២ | ៣ | ៤ | ៥ | ៦ | ៧ | ៨ | ៩ |
| Tibetan | ༠ | ༡ | ༢ | ༣ | ༤ | ༥ | ༦ | ༧ | ༨ | ༩ |
Lưu ý thực tế: Dù cùng giá trị số, Unicode không ánh xạ tự động giữa các bộ. Dev cần dùng
Numeric_Valueproperty khi xử lý text đa ngôn ngữ trong Python (unicodedata.numeric()) hay JavaScript (Intl.NumberFormat).
Số La Mã có nguồn gốc từ Rome cổ đại, kế thừa từ chữ số Etruscan. Unicode dành riêng block U+2160–U+2188 cho Roman numerals để tương thích với văn bản châu Á dọc (vertical text).
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Giá trị | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 50 | 100 | 500 | 1000 |
| U+216x (hoa) | Ⅰ | Ⅱ | Ⅲ | Ⅳ | Ⅴ | Ⅵ | Ⅶ | Ⅷ | Ⅸ | Ⅹ | Ⅺ | Ⅻ | Ⅼ | Ⅽ | Ⅾ | Ⅿ |
| U+217x (thường) | ⅰ | ⅱ | ⅲ | ⅳ | ⅴ | ⅵ | ⅶ | ⅷ | ⅸ | ⅹ | ⅺ | ⅻ | ⅼ | ⅽ | ⅾ | ⅿ |
Ứng dụng hiện đại: Số La Mã trong Unicode được dùng phổ biến trong đánh số trang lời tựa sách (i, ii, iii), phân tích hợp âm nhạc (I, IV, V), đánh số phim sequel (Fast & Furious X), và sự kiện thể thao như Olympic Games hay Super Bowl.

Lưu ý: Unicode khuyến cáo ưu tiên dùng ký tự Latin thông thường (I, V, X, L, C, D, M) thay vì codepoint chuyên biệt U+2160–U+217F cho mục đích thông thường.
Đây là phần liên quan trực tiếp đến typography và UX design. Unicode cung cấp nhiều biến thể hình thức cho chữ số Arab:
| Loại | Ví dụ | Block Unicode | Ứng dụng |
|---|---|---|---|
| Superscript | ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ | U+2070, U+00B9, U+00B2, U+00B3, U+2074–U+2079 | Số mũ, chú thích |
| Subscript | ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ | U+2080–U+2089 | Công thức hóa học H₂O, CO₂ |
| Circled | ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ | U+2460–U+2473 | Danh sách có thứ tự |
| Fullwidth | 0 1 2 3 4 5 6 7 8 9 | U+FF10–U+FF19 | Legacy CJK vertical text |
| Bold sans-serif | 𝟎 𝟏 𝟐 𝟑 𝟒 𝟓 𝟔 𝟕 𝟖 𝟗 | U+1D7CE–U+1D7D7 | Toán học, thiết kế đồ họa |
| Monospace | 𝟶 𝟷 𝟸 𝟹 𝟺 𝟻 𝟼 𝟽 𝟾 𝟿 | U+1D7F6–U+1D7FF | Code display, terminal |
| Vulgar fractions | ¼ ½ ¾ ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞ | U+00BC–U+00BE, U+2150–U+215E | Công thức nấu ăn, tài liệu kỹ thuật |
Ứng dụng UX thực tế: Khi thiết kế bảng giá hoặc bảng số liệu, nên dùng tabular figures (monospace numerals) thay vì proportional figures để các chữ số thẳng hàng theo cột — nguyên tắc này được dạy trong Textual Elements of Design (University of Colorado Boulder).
Đây là hệ thống chữ số ít người biết nhưng thú vị, bắt nguồn từ hệ rod numeral (que tính) Trung Quốc cổ đại. Chữ số Suzhou được dùng để hiển thị giá cả tại các chợ truyền thống Trung Quốc và hóa đơn viết tay.
Các ký tự nằm trong block CJK Symbols and Punctuation tại U+3021–U+3029. Đây cũng là ví dụ điển hình về lỗi đặt tên trong Unicode: phiên bản 3.0 đặt nhầm là "Hangzhou style numerals", đến Unicode 4.0 mới đính chính thành "Suzhou" — nhưng tên ký tự không thể thay đổi theo Unicode Stability Policy.
| Giá trị | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| Ký tự Suzhou | 〡 | 〢 | 〣 | 〤 | 〥 | 〦 | 〧 | 〨 | 〩 |
| Code Point | U+3021 | U+3022 | U+3023 | U+3024 | U+3025 | U+3026 | U+3027 | U+3028 | U+3029 |
Unicode hỗ trợ hệ Attic numerals (còn gọi là Herodianic hay Acrophonic numerals) trong Supplementary Multilingual Plane tại U+10140–U+1018F. Hệ này được dùng từ thế kỷ 7 TCN, mỗi ký hiệu lấy từ chữ cái đầu của từ tương ứng:
| Giá trị thập phân | Ký hiệu | Từ Hy Lạp gốc |
|---|---|---|
| 1 | Ι | ἴος (ios) |
| 5 | Π | πέντε (pente) |
| 10 | Δ | δέκα (deka) |
| 100 | Η | ἑκατόν (hekaton) |
| 1.000 | Χ | χίλιοι (khilioi) |
| 10.000 | Μ | μύριοι (myrioi) |
Hệ counting rod là hệ thống toán học cổ đại Trung Quốc, được Unicode 5.0 chuẩn hóa trong Supplementary Multilingual Plane tại U+1D360–U+1D371. Có 9 chữ số "ngang" (dùng cho lũy thừa lẻ của 10) và 9 chữ số "dọc" (dùng cho lũy thừa chẵn):
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|
| Ngang | 𝍡 | 𝍢 | 𝍣 | 𝍤 | 𝍥 | 𝍦 | 𝍧 | 𝍨 | 𝍩 |
| Dọc | 𝍱 | 𝍲 | 𝍳 | 𝍴 | 𝍵 | 𝍶 | 𝍷 | 𝍸 | |
Lưu ý: Do mới được thêm vào SMP (ngoài BMP), nhiều font phổ biến chưa hỗ trợ đầy đủ các ký tự này.
Hex không dùng ký tự riêng — Unicode tận dụng lại chữ cái Latin A–F. Các ký tự được đánh dấu property Hex_Digit=Yes:
| Tập ký tự | Ví dụ | ASCII Hex? |
|---|---|---|
| Basic Latin hoa | 0123456789ABCDEF |
✓ |
| Basic Latin thường | 0123456789abcdef |
✓ |
| Fullwidth hoa | 0123456789ABCDEF | ✗ |
| Fullwidth thường | 0123456789abcdef | ✗ |
Khi xử lý text đa ngôn ngữ hiện đại, các dev cần biết:
unicodedata.numeric('६') trả về 6.0; unicodedata.category('६') trả về 'Nd' (Decimal digit)\d chỉ match ASCII 0–9; dùng \p{Nd} với flag /u để match tất cả 22 bộ chữ số thập phânNgười Việt tiếp xúc với chữ số La Mã từ rất sớm — chương trình toán lớp 2 đã có bài học về I, V, X, L. Trong thực tế, chúng xuất hiện ở những ngữ cảnh quen thuộc hơn người ta nghĩ:
Văn bản pháp lý: Các chương, điều trong Bộ luật, Hiến pháp thường dùng chữ số La Mã để đánh mục lớn — ví dụ "Chương I", "Phần II" — phân biệt với số thứ tự điều khoản dùng chữ số thường.
Bài viết thuộc Chuyên đề Nghiên Cứu của KiTuHAY. Dữ liệu thuộc sở hữu KiTuHay.Com, vui lòng trích dẫn nguồn nếu tái sử dụng.
Tác giả: Lê Thanh Sang — Kỹ thuật viên & Nhà nghiên cứu Unicode, Công ty TNHH KiTuHAY.
Tham khảo: Unicode Standard 17.0, Section 4.6 · Unicode Character Database · Wikipedia — Numerals in Unicode · Coursera / University of Colorado Boulder, Textual Elements of Design, Certificate EG49LITMPHN0, 2026.