Bản đồ ký tự miễn phí
Duyệt các ký tự Unicode theo danh mục, tìm kiếm theo tên hoặc điểm mã, và sao chép vào clipboard.
Cách sử dụng
- Nhấp vào một tab danh mục để hiển thị các ký tự của nhóm đó.
- Nhấp vào một ký tự để xem chi tiết và các tùy chọn sao chép.
- Sử dụng thanh tìm kiếm để tìm các ký tự theo tên (vd: «heart») hoặc mã hex (vd: «2665»).
- Nhấp Sao chép ký tự để sao chép ký tự đã chọn vào clipboard.
Câu hỏi thường gặp
Điểm mã Unicode là gì?
Điểm mã Unicode là một số duy nhất được gán cho mỗi ký tự trong tiêu chuẩn Unicode. Nó được viết ở định dạng thập lục phân, thường có tiền tố U+ (vd: U+2665 cho ♥).
Thực thể HTML là gì?
Thực thể HTML là một mã đặc biệt đại diện cho một ký tự trong HTML. Ví dụ: ♥ đại diện cho ♥. Các thực thể hữu ích khi không thể nhập trực tiếp một ký tự.
Mã CSS là gì?
Mã CSS sử dụng ký hiệu \\ để chèn một ký tự từ điểm mã Unicode của nó vào stylesheet. Ví dụ: .heart::before { content: "\\2665"; } chèn ♥.
Lịch sử ngắn về Unicode
Trước Unicode, mỗi khu vực có bộ mã ký tự không tương thích riêng: ASCII cho tiếng Anh, họ ISO 8859 cho các ngôn ngữ châu Âu (8859-1 Latin-1, 8859-5 Cyrillic, 8859-6 Arabic), Windows code pages 1252 / 1251 / 1253-1258, bộ đa byte cho các ngôn ngữ Đông Á (Shift-JIS cho tiếng Nhật, Big5 cho tiếng Trung phồn thể, GB2312 cho tiếng Trung giản thể, EUC-KR cho tiếng Hàn). Bộ mã không khớp tạo ra văn bản bị lỗi gọi là mojibake theo tiếng Nhật (文字化け, «biến đổi ký tự»), mở trang Nhật trong bộ mã sai sẽ hiển thị hàng dấu hỏi hoặc các chữ cái Latin-1 ngẫu nhiên.
Công việc bắt đầu năm 1987 tại Xerox. Joe Becker, cùng với Lee Collins và Mark Davis tại Apple, bắt đầu nghiên cứu một bộ ký tự phổ quát duy nhất có thể thay thế mảnh ghép không đồng nhất. Bản đề xuất nháp tháng 8 năm 1988 của Becker, «Unicode 88,» giải thích: «tên 'Unicode' nhằm gợi ý một mã hóa duy nhất, thống nhất, phổ quát.» Unicode Consortium được thành lập vào tháng 1 năm 1991 và phát hành Unicode 1.0 vào tháng 10 năm đó với khoảng 7.100 ký tự trên 24 script.
Tính đến Unicode 17.0 (phát hành ngày 9 tháng 9 năm 2025) tiêu chuẩn chứa khoảng 159.801 ký tự trên 172 script, với không gian mã được phân bổ cho 1.112.064 điểm mã hợp lệ, nghĩa là Unicode đã gán khoảng 14% không gian khả dụng và còn nhiều thập kỷ dự phòng. Các mốc quan trọng gần đây: Unicode 6.0 (2010) là phiên bản đầu tiên chính thức mã hóa emoji (722 emoji, lấy từ các nhà mạng Nhật Bản); Unicode 17.0 thêm bốn script mới (Sidetic, Tolong Siki, Beria Erfe, Tai Yo) và đẩy tổng số ký tự CJK vượt 100.000.
Điểm mã, mặt phẳng và bộ mã hóa
Một điểm mã chỉ là một con số, viết ở hệ thập lục phân với tiền tố U+, như U+2665 cho ♥. Các điểm mã được nhóm thành 17 mặt phẳng, mỗi mặt phẳng có 65.536 điểm mã. Hầu hết mọi thứ bạn từng đọc nằm trên Mặt phẳng 0, Mặt phẳng Đa ngôn ngữ Cơ bản (BMP, U+0000 đến U+FFFF). Mặt phẳng 1 (Mặt phẳng Đa ngôn ngữ Bổ sung) chứa các script lịch sử (Linear B, chữ tượng hình Ai Cập, Cuneiform), ký hiệu âm nhạc, và hầu hết emoji. Mặt phẳng 2 và 3 là phần mở rộng ký tự CJK. Mặt phẳng 4-13 chưa được gán, dành cho tương lai. Mặt phẳng 14 chứa các bộ chọn biến thể và modifier emoji. Mặt phẳng 15 và 16 là các vùng dùng riêng nơi font và ứng dụng gán ý nghĩa riêng.
Điểm mã chỉ là một con số; một bộ mã hóa là cách con số đó được lưu trữ dưới dạng byte. Unicode định nghĩa ba bộ mã hóa:
- UTF-8: độ rộng thay đổi, 1 đến 4 byte mỗi ký tự. Được thiết kế bởi Ken Thompson và Rob Pike tại Bell Labs năm 1992 (phác thảo trên tấm lót bàn của một quán ăn ở New Jersey). 128 điểm mã đầu tiên (ASCII) chiếm đúng 1 byte với giá trị nhị phân giống ASCII, vì vậy một tệp ASCII thuần túy đã là tệp UTF-8 hợp lệ. Tính đến tháng 1 năm 2026, UTF-8 được sử dụng bởi khoảng 98,9% các trang web, là bộ mã hóa được WHATWG khuyến nghị và mặc định cho các giao thức văn bản mới.
- UTF-16: độ rộng thay đổi, 2 hoặc 4 byte. Ký tự BMP chiếm 2 byte; ký tự trong các mặt phẳng bổ sung chiếm 4 byte qua surrogate pair (high surrogate U+D800-U+DBFF cộng low surrogate U+DC00-U+DFFF). Được sử dụng nội bộ bởi Windows API, Java, JavaScript (chuỗi
.lengthđếm đơn vị code UTF-16, đó là lý do emoji thường «đếm là 2»), và Qt. Ít hơn 0,004% trang web công cộng dùng nó làm định dạng truyền tải. - UTF-32: độ rộng cố định, 4 byte mỗi điểm mã. Đơn giản để lập chỉ mục nhưng kém hiệu quả về không gian. Được sử dụng nội bộ bởi một số Unix runtime để lập chỉ mục điểm mã trực tiếp; hiếm gặp trên đĩa hoặc đường truyền.
25 Ký Tự Khoảng Trắng Vô Hình
Unicode chính thức gắn thẻ đúng 25 ký tự với thuộc tính White_Space=yes: khoảng trắng thông thường (U+0020), tab, line feed, carriage return, khoảng trắng không ngắt dòng (U+00A0, loại nổi tiếng trông giống hệt khoảng trắng thông thường nhưng không ngắt qua dòng), các độ rộng kiểu chữ trong U+2000-U+200A, dấu phân cách dòng / đoạn (U+2028 / U+2029), khoảng trắng hẹp không ngắt dòng phổ biến trong kiểu chữ Pháp (U+202F), khoảng trắng toán học trung bình (U+205F), và khoảng trắng ký tự ngữ hình đầy đủ (U+3000) dùng trong văn bản CJK.
Một số ký tự trông vô hình nhưng không được phân loại là khoảng trắng và hoạt động khác với khoảng trắng thông thường:
- U+200B Zero-Width Space: cho phép ngắt dòng mà không có khoảng cách nhìn thấy; không phải khoảng trắng theo phân loại Unicode.
- U+200D Zero-Width Joiner: keo kết nối bên trong emoji nhiều ký tự như chuỗi gia đình hoặc nghề nghiệp.
- U+200C Zero-Width Non-Joiner: điều khiển việc kết nối ligature.
- U+00AD Soft Hyphen: vô hình cho đến khi trình render ngắt dòng.
- U+FEFF Byte Order Mark: ở đầu tệp khai báo endianness; ở giữa tệp là khoảng trắng không ngắt dòng vô hình. Xuất CSV UTF-8 của Excel thêm một cái vào trước, thường hiển thị trong các công cụ phía sau là ký tự đầu bất ngờ trên tiêu đề cột đầu tiên.
Những ký tự vô hình này thường là nguyên nhân của các phiên debug «tại sao chuỗi này không khớp?», dán bất kỳ ký tự nào vào ô tìm kiếm của character map sẽ cho bạn biết điểm mã thực tế, giúp xác nhận liệu bạn đang nhìn vào dấu ngoặc kép thông minh giả dạng dấu thẳng, hay NBSP ở chỗ phải là khoảng trắng thông thường.
Các phạm vi ký tự hữu ích
| Khối | Phạm vi | Ví dụ |
|---|---|---|
| Phần bổ sung Latin-1 | U+0080-U+00FF | à ñ ü © ® ¥ § ° ¶ |
| Greek | U+0370-U+03FF | α β γ π Σ Ω |
| Cyrillic | U+0400-U+04FF | Tiếng Nga / Ukraina / Bulgaria, v.v. |
| Dấu câu chung | U+2000-U+206F | -, … " " ' ' • † NBSP ZWSP |
| Ký hiệu tiền tệ | U+20A0-U+20CF | € £ ¥ ₩ ₽ ₹ ₿ |
| Ký hiệu dạng chữ | U+2100-U+214F | ™ ℠ № ℃ ℉ ℗ |
| Arrows | U+2190-U+21FF | ← → ↑ ↓ ↔ ⇒ ⇐ |
| Toán tử toán học | U+2200-U+22FF | ∑ ∫ ∞ √ ≠ ≤ ≥ ± ∂ ∇ ∈ ∪ ∩ |
| Vẽ hộp | U+2500-U+257F | ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ═ ║ ╔ ╗ |
| Ký tự chữ-số toán học | U+1D400-U+1D7FF | Bộ tạo «fancy text» (𝓗𝓮𝓵𝓵𝓸) lấy nguồn từ đây. |
Ký tự đặc biệt trong văn bản hằng ngày
Trường hợp «tôi chỉ cần gõ một ký hiệu», tham chiếu nhanh về những gì công cụ này tồn tại để cung cấp trong hai cú nhấp:
- Gạch ngang dài - U+2014 (
—), ngắt cấp câu. - Gạch ngang ngắn - U+2013 (
–)) phạm vi (1950-1975) và ghép đôi (Boston-Hartford). - Dấu chấm lửng … U+2026 (
…), ba chấm như một ký tự duy nhất. - Dấu ngoặc kép thông minh: mở U+201C, đóng U+201D, mở U+2018, đóng U+2019.
- Khoảng trắng không ngắt dòng U+00A0 (
), giữ «100 km» không bị tách. - Bản quyền © U+00A9, Đã đăng ký ® U+00AE, Nhãn hiệu ™ U+2122.
- Dấu tiết § U+00A7, Pilcrow ¶ U+00B6, Độ ° U+00B0.
- Nhân × U+00D7, Chia ÷ U+00F7, không phải là chữ cái
xhay dấu gạch chéo.
Khi nào bạn cần character map
- Gõ chữ cái có dấu mà không cần layout bàn phím phù hợp: résumé, jalapeño, fiancée, naïve.
- Toán học và khoa học: dán ∑, ∫, ≠, π, ±, ∞, μ, Ω vào tài liệu mà không cần mở trình soạn thảo phương trình.
- Tiền tệ: ký hiệu bạn cần hiếm khi có trên bàn phím. Euro €, yen ¥, peso ₱, rupee ₹.
- Dấu câu trong văn bản pháp lý và học thuật: gạch ngang dài, dấu ngoặc kép thông minh, dấu tiết §, dagger †.
- Văn bản hiển thị ấn tượng cho bio mạng xã hội và branding: Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) cho phép bạn tạo kiểu văn bản mà không cần dùng hình ảnh.
- Thiết kế CLI và TUI: các ký tự Box Drawing cho viền ASCII-art, chương trình ncurses, và sơ đồ README.
- Debug lỗi mã hóa: dán một ký tự để xem điểm mã thực tế của nó và xác nhận liệu bạn có dấu ngoặc kép thông minh giả dạng dấu thẳng không.
Bảo mật: vấn đề homograph
Nhiều ký tự Unicode trông giống hệt nhau qua các script. Chữ thường Cyrillic «а» (U+0430) không thể phân biệt bằng mắt với chữ Latin «a» (U+0061). Kẻ tấn công đăng ký tên miền quốc tế hóa trông giống tên miền hợp lệ (ví dụ như «apple.com» với chữ а Cyrillic thay cho chữ a Latin) và dùng chúng để lừa đảo. Một cuộc tấn công năm 2017 vào adoḅe.com dùng ḅ có dấu chấm bên dưới (U+1E05) để phân phối malware. Các trình duyệt hiện đại giảm thiểu điều này bằng các quy tắc pha trộn script hạn chế, chuyển về dạng Punycode ASCII (xn--…) khi một tên miền pha trộn script; Safari đặc biệt thận trọng. Thuộc tính lookalike giúp Unicode phong phú cho văn bản con người cũng làm nó nguy hiểm trong tên miền, và character map là một cách để xác nhận điểm mã thực tế của mỗi ký tự trong nháy mắt.
Câu Hỏi Thêm
Sự khác biệt giữa ký tự và glyph là gì?
Một ký tự là đơn vị trừu tượng mà Unicode mã hóa, chữ A, bất kể typeface. Một glyph là hình vẽ cụ thể của ký tự đó trong một font cụ thể: A trong Helvetica, A trong Garamond, A trong Comic Sans đều là cùng một ký tự nhưng ba glyph khác nhau. Unicode mã hóa ký tự; font cung cấp glyph.
Tại sao «1.0» có 7.000 ký tự nhưng «17.0» có 160.000?
Unicode 1.0 bao gồm 24 script, hầu hết các hệ thống chữ viết đang dùng trong tính toán thời đó. Sự tăng trưởng từ đó đến nay đến từ ba nguồn: mở rộng đáng kể phạm vi ký tự CJK (bao gồm các ký tự Hán cổ và biến thể vùng hiếm gặp, Extension J thêm 4.298 ký tự trong phiên bản 17.0), chính thức mã hóa các script lịch sử (Linear B, Cuneiform, chữ tượng hình Ai Cập, Phoenician), và chuẩn hóa emoji từ năm 2010 trở đi.
HTML entity là gì?
Một cách mã hóa ký tự bên trong HTML bằng cú pháp thoát đặc biệt. Có các entity có tên cho các ký tự phổ biến (© cho ©, — cho -) và các entity số cho bất kỳ điểm mã nào (♥ hoặc ♥ cho ♥). Chúng hữu ích khi gõ trực tiếp ký tự gây khó chịu, ví dụ trong mã nguồn với bộ mã hóa hỗn hợp, hoặc trong hệ thống loại bỏ ký tự non-ASCII.
CSS escape là gì?
CSS dùng dấu gạch chéo ngược cộng mã điểm hex: .heart::before { content: "\2665"; } chèn ♥. Hữu ích bên trong nội dung được tạo ::before / ::after, trong CSS counter styles, và ở bất kỳ nơi nào không thể dựa vào bộ mã hóa của tệp nguồn.
Có gì được gửi đến máy chủ không?
Không. Dữ liệu ký tự được đóng gói cùng trang; tìm kiếm và lọc theo danh mục chạy cục bộ trong JavaScript; Copy dùng Clipboard API của trình duyệt. Không có gì rời thiết bị của bạn, và trang hoạt động ngoại tuyến sau khi đã tải.