Bảng mã Unicode có bao nhiêu ký tự?

Tiêu chuẩn Unicode :Tiêu chuẩn Unicode là một mạng lưới hệ thống mã hóa ký tự được phong cách thiết kế để tương hỗ việc trao đổi, giải quyết và xử lý và hiển thị trên toàn quốc tế những văn bản viết bằng những ngôn từ và kỹ thuật phong phú của quốc tế văn minh. Ngoài ra, nó tương hỗ những văn bản cổ xưa và lịch sử vẻ vang của nhiều ngôn từ viết .

Nói một cách dễ hiểu, Unicode gán cho mỗi ký tự một số duy nhất (được gọi là điểm mã), bất kể nền tảng, chương trình hay bất kỳ thứ gì khác.

Bộ ký tự

Bộ ký tự là một tập hợp cố định và thắt chặt của những ký hiệu. Ví dụ, từ أ đến ي là một bộ ký tự đại diện thay mặt cho bảng vần âm Ả Rập .

Một ví dụ khác là bảng ASCII nổi tiếng: một mã ký tự bảy bit trong đó mỗi chuỗi đại diện cho một ký tự duy nhất. ASCII có thể đại diện cho 27 (= 128) ký tự (bao gồm cả ký tự không in được), nhưng đáng buồn là nó không thể đại diện cho tình yêu , bảng chữ cái tiếng Do Thái, tiếng Nga, tiếng Ả Rập và các ký tự hữu ích hơn. Nhưng tại sao?

Vì bất kể tệp nào cũng phải trải qua quy trình mã hóa / giải mã để được tàng trữ đúng cách, máy tính của bạn cần biết cách dịch bộ ký tự của mạng lưới hệ thống viết ngôn từ của bạn thành những chuỗi 0 và 1. Quá trình này được gọi là mã hóa ký tự. Bạn hoàn toàn có thể nghĩ về nó như một cái bàn. Để phân phối cho bạn trực giác về bảng có nghĩa là gì, hãy xem hình ảnh dưới đây :

Bảng mã Unicode có bao nhiêu ký tự?

Bảng ASCIIBảng ASCIIKý tự A được biểu lộ bằng giá trị thập phân 65 ( là 1000001 trong hệ nhị phân bảy bit ). Vì vậy, giờ đây câu hỏi là, làm thế nào để tất cả chúng ta đại diện thay mặt cho những ký tự nằm ngoài khoanh vùng phạm vi này ?

Hệ thống mã hóa

Điều rất quan trọng là phải phân biệt giữa bộ ký tự và khái niệm mạng lưới hệ thống mã hóa. Kiểu tiên phong chỉ đơn thuần là một tập hợp những ký tự bạn hoàn toàn có thể sử dụng, trong khi kiểu sau là cách những ký tự này được tàng trữ trong bộ nhớ ( dưới dạng một dòng byte ), vì thế hoàn toàn có thể có nhiều hơn một mã hóa cho một bộ ký tự nhất định .Cũng giống như lược đồ ASCII, có nhiều mạng lưới hệ thống mã hóa khác :

UTF-32

Lược đồ này yêu cầu 32 bit (bốn byte) để mã hóa bất kỳ ký tự nào. Ví dụ: để biểu diễn điểm mã ký tự A bằng cách sử dụng lược đồ này, chúng tôi sẽ cần viết 65 ở dạng số nhị phân 32 bit:

00000000 00000000 00000000 01000001
00000000 00000000 00000000 01000001Lược đồ này không tốt cho người nói tiếng Anh, chính bới giờ đây những tệp chỉ chứa những ký tự ASCII, ví dụ điển hình có tổng kích cỡ X byte, sẽ biến thành những con quái vật có kích thước gấp bốn lần byte, điều này gây tiêu tốn lãng phí bộ nhớ .

UTF-16 (+ LE & BE)

Một giải pháp khác ở dạng UTF-16 đã được đưa ra. Bạn hoàn toàn có thể nghĩ rằng giống như UTF-32 sử dụng 32 bit có chiều rộng cố định và thắt chặt để trình diễn một điểm mã, UTF-16 là 16 bit có chiều rộng cố định và thắt chặt. Sai lầm !

Trong UTF-16, điểm mã có thể được biểu diễn bằng 16 bit hoặc 32 bit. Vì vậy, lược đồ này là một hệ thống mã hóa có độ dài thay đổi. Ưu điểm so với UTF-32 là gì? Ít nhất đối với ASCII, kích thước của tệp sẽ không gấp bốn lần so với ban đầu (nhưng vẫn là gấp đôi), vì vậy chúng tôi vẫn chưa tương thích ngược ASCII.

Vì bảy bit là đủ để đại diện thay mặt cho ký tự A, giờ đây tất cả chúng ta hoàn toàn có thể sử dụng hai byte thay vì bốn như UTF-32 .00000000 01000001
01000001 00000000
int *p;
p = (int *) malloc(8 * sizeof(int));
+—+—+
| 0 | A |
+—+—+
+—+—+
| A | 0 |
+—+—+

UTF-8

00000000 01000001 01000001 00000000 int * p ; p = ( int * ) malloc ( 8 * sizeof ( int ) ) ; + — + — + | 0 | A | + — + — + + — + — + | A | 0 | + — + — +

Bạn đoán đúng: Trong UTF-8, điểm mã có thể được biểu diễn bằng cách sử dụng 32, 16, 24 hoặc tám bit và là hệ thống UTF-16, điểm mã này cũng là hệ thống mã hóa có độ dài thay đổi.

Cuối cùng, tất cả chúng ta hoàn toàn có thể trình diễn A giống như cách tất cả chúng ta trình diễn nó bằng cách sử dụng mạng lưới hệ thống mã hóa ASCII :01001101
01001101Mở trình soạn thảo văn bản thương mến của bạn ( Vim ) và tạo một tệp có chứa ký tự A. Hãy xem bảng mã của nó :$ xxd -b test.txt
0000000: 0100001 00001010
$ du -b test.txt | cut -f1
2
$ file test.txt
test.txt: UTF-8 Unicode text
$ du -b test.txt | cut -f1
3
$ xxd -b test.txt
0000000: 11001110 10110100 00001010
11001110 10110100
11001110 10110100

UTF-8 so với UTF-16

USD xxd – b test.txt 0000000 : 0100001 00001010 $ du – b test.txt | cut – f1 2 USD file test.txt test.txt : UTF-8 Unicode text $ du – b test.txt | cut – f1 3 $ xxd – b test.txt 0000000 : 11001110 10110100 00001010 11001110 10110100 11001110 10110100

Cả UTF-8 và UTF-16 đều là mã hóa có độ dài thay đổi. Mã hóa UTF-8 có thể chiếm tối thiểu tám bit, trong khi yêu cầu tối thiểu 16 bit cho UTF-16.

Unicode là một tiêu chuẩn mã hóa ký tự phổ biến. Nó xác định cách các ký tự riêng lẻ được biểu diễn trong các file văn bản, trang web và các loại tài liệu khác.

Unicode (hay gọi là mã thống nhất; mã đơn nhất) là bộ mã chuẩn quốc tế được thiết kế để dùng làm bộ mã duy nhất cho tất cả các ngôn ngữ khác nhau trên thế giới, kể cả các ngôn ngữ sử dụng ký tự tượng hình phức tạp như chữ Hán của tiếng Trung Quốc, tiếng Nhật, chữ Nôm của tiếng Việt, v.v. Vì những điểm ưu việt đó, Unicode đã và đang từng bước thay thế các bộ mã truyền thống, kể cả bộ mã tiêu chuẩn ISO 8859. Unicode đang được sử dụng trên rất nhiều phần mềm cũng như các trình ứng dụng, chẳng hạn Windows (theo wikipedia).

Phiên bản mới nhất là Unicode® 13.0.0 công bố ngày 10 tháng 3 năm 2020.

Đặc điểm của Unicode

Một tiêu chuẩn trên toàn thế giới được phát triển để giúp khắc phục những hạn chế của ASCII đã được phát hành lần đầu tiên như một tiêu chuẩn vào tháng 10 năm 1991.

Không giống như ASCII, được thiết kế để chỉ đại diện cho các ký tự tiếng Anh cơ bản, Unicode được thiết kế để hỗ trợ các ký tự từ tất cả các ngôn ngữ trên thế giới. Bộ ký tự ASCII tiêu chuẩn chỉ hỗ trợ 128 ký tự, trong khi Unicode có thể hỗ trợ khoảng 1.000.000 ký tự. Trong khi ASCII chỉ sử dụng một byte để đại diện cho mỗi ký tự, Unicode hỗ trợ tối đa 4 byte cho mỗi ký tự.

Unicode thường sử dụng nhất là gì?

Một loại Unicode phổ biến là UTF-8, sử dụng mã hóa ký tự 8 bit. Nó thường được sử dụng trong môi trường Linux, để mã hóa các ký tự nước ngoài để chúng hiển thị đúng khi xuất ra tệp văn bản.

Với Unicode, mỗi ký tự sử dụng một số duy nhất từ ​​U+0000 đến U+10FFFF, Unicode có thể là 8-bit, 16-bit hoặc 32-bit. Các số, ký hiệu toán học, các ký hiệu và ký tự phổ biến từ tất cả các ngôn ngữ đều được gán một điểm mã, ví dụ: U+0041 là một chữ cái tiếng Anh “A.”

Bảng mã Unicode là gì?

Unicode là một bảng mã, nó ánh xạ một số duy nhất đến một ký tự (ký tự này có thể là chữ cái tiếng Anh như “a”, “b” hoặc tiếng Việt “á”, “ớ”, tiếng Nhật hoặc là các ký tự đặc biệt như “$”, “%”, dấu chấm câu “.”, “,”…)

Bảng mã Unicode có bao nhiêu ký tự?
Unicode là gì? Bảng mã Unicode gồm những font chữ nào?

Mỗi số như vậy được gọi là một điểm mã (code point), một khái niệm mang tính lý thuyết. Còn việc điểm mã được biểu diễn trong bộ nhớ hay ổ đĩa là một câu chuyện hoàn toàn khác. Mỗi điểm mã được biểu diễn dưới dạng U+0639. “U+” tượng trưng cho “Unicode”, còn phần hệ số là hệ hexa. Ví dụ, điểm mã U+0041 là số hexa 0041 (tương đương số thập phân 65). Nó biểu diễn ký tự “A” trong chuẩn Unicode.

Mỗi ký tự được gán một tên duy nhất để phân biệt nó với ký tự khác. Chẳng hạn, U+0041 được gán tên là “LATIN CAPITAL LETTER A”. U+0A1B được gán với tên “GURMUKHI LETTER CHA”.

Lấy ví dụ một xâu ký tự:

Hello

trong Unicode, xâu ký tự này tương ứng với 5 điểm mã (lưu ý là 5 điểm mã chứ không phải 5 byte)

U+0048 U+0065 U+006C U+006C U+006F

Số chữ cái mà Unicode có thể định nghĩa là không giới hạn, trên thực tế nó vượt xa con số 65536. Phiên bản Unicode mới nhất là 9.0.0, biểu diễn tổng số 128172 ký tự.

Một số thuật ngữ thường dùng trong Unicode như: không gian mã (code space), plane, code unit, block…

Không gian mã là không gian chứa tất cả các điểm mã của Unicode. Một thuật ngữ khác là plane. Unicode chia thành 17 plane, mỗi plane chứa 65,536 ký tự (tương đương 16 bit), bởi vậy tổng kích thước không gian mã của Unicode là 17 × 65,536 = 1,114,112.

Bảng mã Unicode gồm những font chữ nào?

Bảng mã Unicode có rất nhiều font chữ, một số font chữ phổ biến thường dùng như: Times New Roman, Tahoma, Arial,…