Code Point
Số duy nhất được gán cho mỗi ký tự trong Unicode. Viết dưới dạng U+ theo sau là chữ số thập lục phân, ví dụ: U+0041 (A).
Code point là số duy nhất được gán cho mỗi ký tự trong tiêu chuẩn Unicode. Viết dưới dạng U+ theo sau là chữ số thập lục phân: U+0041 (chữ A Latin viết hoa), U+3042 (hiragana a), U+1F600 (emoji mặt cười). Đây là đơn vị cơ bản nhất để xác định ký tự trong Unicode và được tham chiếu trong mọi khía cạnh của xử lý văn bản.
Unicode định nghĩa khoảng 1,1 triệu code point có thể (0 đến 10FFFF), với khoảng 150.000 ký tự được gán tính đến năm 2024. Không gian này được chia thành 17 "plane", với plane đầu tiên (BMP: Basic Multilingual Plane, U+0000 đến U+FFFF) chứa hầu hết các ký tự thường dùng. Các ký tự ngoài BMP (emoji, chữ viết cổ, v.v.) được đặt trong các plane bổ sung. Tài liệu tham khảo tiêu chuẩn Unicode giải thích hệ thống code point chi tiết.
Trong JavaScript, String.codePointAt() lấy code point, và String.fromCodePoint() tạo ký tự từ code point. Python cung cấp ord() và chr() cho cùng mục đích. Trong biểu thức chính quy, ký hiệu \u{1F600} với dấu ngoặc nhọn có thể chỉ định code point ngoài BMP.
Một code point không phải lúc nào cũng tương ứng với một ký tự hiển thị. Ký tự kết hợp (như dấu trọng âm) kết hợp với ký tự cơ sở để tạo thành một cụm grapheme duy nhất, và chuỗi emoji (như emoji gia đình) có thể sử dụng tới 7 code point để tạo thành một ký tự hiển thị duy nhất. Ngược lại, ký tự điều khiển (như U+200B khoảng trắng không chiều rộng) được đếm là code point mặc dù không hiển thị trên màn hình.
Mối quan hệ giữa code point và mã hóa cũng quan trọng. Cùng code point U+3042 (あ) được biểu diễn dưới dạng 3 byte (E3 81 82) trong UTF-8, 2 byte (30 42) trong UTF-16, và 4 byte (00 00 30 42) trong UTF-32. Các code point ngoài BMP được biểu diễn dưới dạng cặp thay thế (4 byte) trong UTF-16.
Đối với đếm ký tự, điều quan trọng cần lưu ý là số code point thường không khớp với "số ký tự trực quan". [...str].length của JavaScript trả về số code point, nhưng đếm theo cụm grapheme yêu cầu Intl.Segmenter. Đếm ký tự chính xác đòi hỏi hiểu khái niệm code point và chọn mức đếm phù hợp. Sách lập trình Unicode dạy xử lý ký tự chính xác.