ASCII và Unicode đều là tiêu chuẩn đề cập đến sự biểu diễn kỹ thuật số của văn bản, cụ thể là các ký tự tạo nên văn bản. Tuy nhiên, hai tiêu chuẩn có sự khác biệt đáng kể, với nhiều thuộc tính phản ánh thứ tự tạo tương ứng của chúng.
Châu Mỹ so với vũ trụ
Không có gì ngạc nhiên khi Bộ luật trao đổi thông tin tiêu chuẩn của Mỹ (ASCII) phục vụ cho khán giả Mỹ, viết bằng bảng chữ cái tiếng Anh. Nó xử lý các chữ cái không có dấu, chẳng hạn như AZ và az, cộng với một số lượng nhỏ các ký hiệu dấu câu và ký tự điều khiển.
Đặc biệt, không có cách nào thể hiện các từ cho vay được áp dụng từ các ngôn ngữ khác, chẳng hạn như café trong ASCII, mà không làm phức tạp chúng bằng cách thay thế các ký tự có dấu (ví dụ: café ). Các phần mở rộng ASCII được bản địa hóa đã được phát triển để đáp ứng nhu cầu của nhiều ngôn ngữ khác nhau, nhưng những nỗ lực này đã làm cho khả năng tương tác trở nên khó khăn và rõ ràng là đang kéo dài khả năng của ASCII.
Ngược lại, Bộ ký tự được mã hóa phổ quát (Unicode) nằm ở đầu đối diện của thang tham vọng. Unicode cố gắng phục vụ cho càng nhiều hệ thống chữ viết trên thế giới càng tốt, đến mức nó bao gồm các ngôn ngữ cổ và bộ biểu tượng biểu cảm, biểu tượng cảm xúc yêu thích của mọi người.
Bộ ký tự hoặc mã hóa ký tự?
Nói một cách dễ hiểu, tập ký tự là sự lựa chọn các ký tự (ví dụ: A-Z) trong khi mã hóa ký tự là ánh xạ giữa tập ký tự và giá trị có thể được biểu diễn bằng kỹ thuật số (ví dụ: A = 1, B = 2).
Tiêu chuẩn ASCII thực sự là cả hai: nó xác định tập hợp các ký tự mà nó đại diện và một phương pháp ánh xạ mỗi ký tự thành một giá trị số.
Ngược lại, từ Unicode được sử dụng trong một số ngữ cảnh khác nhau để có nghĩa là những thứ khác nhau. Bạn có thể coi nó như một thuật ngữ bao hàm tất cả, như ASCII, để chỉ một bộ ký tự và một số bảng mã. Tuy nhiên, bởi vì có một số bảng mã, thuật ngữ Unicode thường được sử dụng để chỉ tập hợp tổng thể các ký tự, hơn là cách chúng được ánh xạ.
Kích thước
Do phạm vi của nó, Unicode đại diện cho nhiều ký tự hơn ASCII. ASCII tiêu chuẩn sử dụng phạm vi 7 bit để mã hóa 128 ký tự riêng biệt . Mặt khác, Unicode quá lớn nên chúng ta cần sử dụng các thuật ngữ khác nhau chỉ để nói về nó!
Unicode phục vụ cho 1.111.998 điểm mã địa chỉ . Một điểm mã gần giống với một không gian dành riêng cho một ký tự, nhưng tình huống phức tạp hơn rất nhiều so với khi bạn bắt đầu đi sâu vào chi tiết!
Một so sánh hữu ích hơn là có bao nhiêu tập lệnh (hoặc hệ thống viết) hiện đang được hỗ trợ. Tất nhiên, ASCII chỉ xử lý bảng chữ cái tiếng Anh, về cơ bản là hệ thống chữ viết La tinh hoặc La mã. Phiên bản Unicode được sản xuất vào năm 2020 còn tiến xa hơn rất nhiều: nó bao gồm hỗ trợ cho tổng số 154 tập lệnh.
Kho
Phạm vi 7 bit của ASCII có nghĩa là mỗi ký tự được lưu trữ trong một byte 8 bit duy nhất; bit dự phòng không được sử dụng trong ASCII tiêu chuẩn. Điều này làm cho các phép tính kích thước trở nên tầm thường: độ dài của văn bản, tính bằng ký tự, là kích thước của tệp tính bằng byte.
Bạn có thể xác nhận điều này bằng chuỗi lệnh bash sau đây. Đầu tiên, chúng tôi tạo một tệp chứa 12 chữ cái văn bản:
$ echo -n 'Hello, world' > foo
Để kiểm tra xem văn bản có ở dạng mã ASCII hay không, chúng ta có thể sử dụng lệnh tệp :
$ file foo foo: ASCII text, with no line terminators
Cuối cùng, để có được số byte chính xác mà tệp chiếm, chúng ta sử dụng lệnh stat :
$ stat -f%z foo 12
Vì tiêu chuẩn Unicode xử lý nhiều ký tự hơn, nên tệp Unicode đương nhiên sẽ chiếm nhiều dung lượng lưu trữ hơn. Chính xác bao nhiêu phụ thuộc vào bảng mã.
Việc lặp lại cùng một nhóm lệnh trước đó, sử dụng một ký tự không thể được biểu diễn trong ASCII, sẽ cho kết quả sau:
$ echo -n '€' > foo $ file foo foo: UTF-8 Unicode text, with no line terminators $ stat -f%z foo 3
Ký tự đơn đó chiếm 3 byte trong một tệp Unicode. Lưu ý rằng bash đã tự động tạo tệp UTF-8 vì tệp ASCII không thể lưu trữ ký tự đã chọn (€). UTF-8 cho đến nay là bảng mã ký tự phổ biến nhất cho Unicode; UTF-16 và UTF-32 là hai bảng mã thay thế, nhưng chúng được sử dụng ít hơn nhiều.
UTF-8 là một mã hóa có độ rộng thay đổi, có nghĩa là nó sử dụng các lượng lưu trữ khác nhau cho các điểm mã khác nhau. Mỗi điểm mã sẽ chiếm từ một đến bốn byte, với mục đích là các ký tự phổ biến hơn yêu cầu ít dung lượng hơn, cung cấp một kiểu nén tích hợp sẵn. Điểm bất lợi là việc xác định yêu cầu về độ dài hoặc kích thước của một đoạn văn bản nhất định trở nên phức tạp hơn nhiều.
ASCII là Unicode, nhưng Unicode không phải là ASCII
Để tương thích ngược, 128 điểm mã Unicode đầu tiên đại diện cho các ký tự ASCII tương đương. Vì UTF-8 mã hóa mỗi ký tự này bằng một byte đơn, nên bất kỳ văn bản ASCII nào cũng là văn bản UTF-8. Unicode là một tập hợp siêu của ASCII.
Tuy nhiên, như được hiển thị ở trên, nhiều tệp Unicode không thể được sử dụng trong ngữ cảnh ASCII. Bất kỳ ký tự nào nằm ngoài giới hạn sẽ được hiển thị theo cách không mong muốn, thường là các ký tự được thay thế hoàn toàn khác với những ký tự đã định.
Cách sử dụng hiện đại
Đối với hầu hết các mục đích, ASCII phần lớn được coi là một tiêu chuẩn kế thừa. Ngay cả trong những tình huống chỉ hỗ trợ hệ chữ Latinh — ví dụ, trong đó hỗ trợ đầy đủ cho sự phức tạp của Unicode là không cần thiết — việc sử dụng UTF-8 thường thuận tiện hơn và tận dụng khả năng tương thích ASCII của nó.
Đặc biệt, các trang web phải được lưu và truyền bằng UTF-8, là mặc định cho HTML5. Điều này trái ngược với trang web trước đó, được xử lý bằng ASCII theo mặc định trước đó đã được thay thế bằng 1 Latin.
Một tiêu chuẩn đang thay đổi
Lần sửa đổi cuối cùng của ASCII diễn ra vào năm 1986.
Ngược lại, Unicode tiếp tục được cập nhật hàng năm. Các tập lệnh, ký tự mới và đặc biệt là các biểu tượng cảm xúc mới thường xuyên được thêm vào. Chỉ với một phần nhỏ trong số này được phân bổ, bộ nhân vật đầy đủ có khả năng phát triển và phát triển trong tương lai gần.
Liên quan: Giải thích 100 biểu tượng cảm xúc phổ biến nhất
ASCII so với Unicode
ASCII phục vụ mục đích của nó trong nhiều thập kỷ, nhưng Unicode hiện đã thay thế nó một cách hiệu quả cho tất cả các mục đích thực tế khác ngoài các hệ thống kế thừa. Unicode lớn hơn và do đó, biểu cảm hơn. Nó đại diện cho một nỗ lực hợp tác trên toàn thế giới và cung cấp tính linh hoạt cao hơn nhiều, mặc dù phải trả giá bằng một số phức tạp.