So sánh bảng mã ascii và unicode năm 2024

Bảng mã Unicode là gì ? so sánh sự khác biệt của các bảng mã Unicode UTF7 , UTF 16 , UTF 32 , UTF 8 ?

Bảng mã Unicode (hay còn gọi là bảng 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ư tiếng Trung Quốc, tiếng Việt Nam , tiếng Thái Lan … 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 và hiện đang được hỗ trợ 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.

Sự khác biệt giữa các bảng mã là :

UTF 8 : UTF-8 là một cách mã hóa để có tác dụng giống như UCS-4 (cũng là UTF-16), chứ không phải có code point nào khác. UTF-8 được thiết kế để tương thích với chuẩn ASCII. UTF-8 có thể sử dụng từ một (cho những ký tự trong ASCII) cho đến 6 byte để biểu diễn một ký tự.

Chính vì tương thích với ASCII, UTF-8 cực kỳ có lợi thế khi được sử dụng để bổ sung hỗ trợ Unicode cho các phần mềm có sẵn. Thêm vào đó, các nhà phát triển phần mềm vẫn có thể sử dụng các hàm thư viện có sẵn của ngôn ngữ lập trình C để so sánh (comparisons) và xếp thứ tự. (Ngược lại, để hỗ trợ các cách mã hóa 16 bit hay 32 bit như ở trên, một số lớn phần mềm buộc phải viết lại do đó tốn rất nhiều công sức. Một điểm mạnh nữa của UTF-8 là với các văn bản chỉ có một số ít các ký tự ngoài ASCII, hay thậm chí cho các ngôn ngữ dùng bảng chữ cái Latinh như tiếng Việt,tiếng Anh ,tiếng Đức ...; cách mã hóa kiểu này cực kỳ tiết kiệm không gian lưu trữ.

UTF-8 được thiết kế đảm bảo không có chuỗi byte của ký tự nào lại nằm trong một chuỗi của ký tự khác dài hơn. Điều này khiến cho việc tìm kiếm ký tự theo byte trong một văn bản là rất dễ dàng. Một số dạng mã hóa khác (như Shift-JIS) không có tính chất này khiến cho việc xử lý chuỗi ký tự trở nên phức tạp hơn nhiều. Mặc dù để thực hiện điều này đòi hỏi phải có độ dư (văn bản sẽ dài thêm) nhưng những ưu điểm mà nó mang lại vẫn nhiều hơn. Việc nén dữ liệu không phải là mục đích hướng tới của Unicode và việc này cần được tiến hành một cách độc lập.

Các quy định chính xác của UTF-8 như sau (các số bắt đầu bằng 0x là các số biểu diễn trong hệ thập lục phân )

· Các ký tự có giá trị nhỏ hơn 0x80, sử dụng 1 byte có cùng giá trị.

· Các ký tự có giá trị nhỏ hơn 0x800, sử dụng 2 byte: byte thứ nhất có giá trị 0xC0 cộng với 5 bit từ thứ 7 tới 11 (7th-11th least significant bits); byte thứ hai có giá trị 0x80 cộng với các bit từ thứ 1 tới thứ 6 (1st-6th least significant bits).

· Các ký tự có giá trị nhỏ hơn 0x10000, sử dụng 3 byte: byte thứ nhất có giá trị 0xE0 cộng với 4 bit từ thứ 13 tới 16; byte thứ hai có giá trị 0x80 cộng với 6 bit từ thứ 7 tới 12; byte thứ ba có giá trị 0x80 cộng với 6 bit từ thứ 1 tới thứ 6.

· Các ký tự có giá trị nhỏ hơn 0x200000, sử dụng 4 byte: byte thứ nhất có giá trị 0xF0 cộng với 3 bit từ thứ 19 tới 21; byte thứ hai có giá trị 0x80 cộng với 6 bit từ thứ 13 tới 18; byte thứ ba có giá trị 0x80 cộng với 6 bit từ thứ 7 tới thứ 12; byte thứ tư có giá trị 0x80 cộng với 6 bit từ thứ 1 tới thứ 6.

Hiện nay, các giá trị khác ngoài các giá trị trên đều chưa được sử dụng. Tuy nhiên, các chuỗi ký tự dài tới 6 byte có thể được dùng trong tương lai.

· Chuỗi 5 byte sẽ lưu trữ được mã ký tự chứa đến 26 bit: byte thứ nhất có giá trị 0xF8 cộng với 2 bit thứ 25 và 26, các byte tiếp theo lưu giá trị 0x80 cộng với 6 bit có ý nghĩa tiếp theo.

· Chuỗi 6 byte sẽ lưu trữ được mã ký tự chứa đến 31 bit: byte thứ nhất có giá trị 0xFC cộng với bit thứ 31, các byte tiếp theo lưu giá trị 0x80 cộng với 6 bit có ý nghĩa tiếp theo.

UTF 32 :

Cách đơn giản nhất để lưu trữ tất cả các 220+216 Unicode code points là sử dụng 32 bit cho mỗi ký tự, nghĩa là, 4 byte – do đó, cách mã hóa này được Unicode gọi là UTF 32 và ISO/IEC 10646 gọi là UCS-4 . Vấn đề chính của cách này là nó hao chỗ hơn 4 lần so với trước kia, do đó nó ít được dùng trong các vật nhớ ngoài (như đĩa, băng). Tuy nhiên, nó rất đơn giản, nên một số chương trình sẽ sử dụng mã hóa 32 bit bên trong khi xử lý Unicode.

UTF 16 :

UTF-16 là một cách mã hóa dùng Unicode 20 bit. Các ký tự trong BMP được diễn tả bằng cách dùng giá trị 16-bit của code point trong Unicode CCS. Có hai cách để viết giá trị 16 bit trong một dòng (stream) 8-bit. Có lẽ bạn đã nghe qua chữ endian. Big Endian có nghĩa là cho Most Significant Byte đi trước, tức là nằm bên trái – do đó ta có UTF-16BE. Còn Little Endian thì ngược lại, tức là Least Significant Byte đi trước – do đó ta có UTF-16LE. Thí dụ, giá trị 16-bit của con số Hex1234 được viết là Hex12 Hex34 trong Big Endian và Hex34 Hex12 trong Little Endian.

Những ký hiệu không nằm trong BMP được biểu diễn bằng cách dùng surrogate pair (cặp thay thế). Code points có giá trị từ U+D800 đến U+DFFF được dành riêng ra để dùng cho mục đích này. Trước hết, một code point có 20 bit được phân ra làm hai nhóm 10 bit. Nhóm Most Significant 10 bit được map vào một giá trị 10 bit nằm trong khoảng từ u+D800 đến u+DBFF. Nhóm Least Significant 10 bit được map vào một giá trị 10 bit nằm trong khoảng từ U+DC00 đến U+DFFF. Theo cách đó UTF-16 có thể biểu diễn được những ký hiệu Unicode có 20 bit.

Unicode khác gì ASCII?

Nó chỉ mã hoá được 256 kí tự (từ 0 đến 255) gọi là mà ASCII thập phân của kí tự. - Còn bộ mã Unicode sử dụng 16 bit để mã hoá, nó có thể mã hoá được 65536 kí tự khác nhau, cho phép thể hiện trong máy tính văn bản của hầu hết các ngôn ngữ trên thế giới bằng một bộ mã này.

Bảng mã ASCII có thể mã hóa được bao nhiêu ký tự khác nhau?

Mã ASCII hiện tại có tổng cộng 256 ký tự, bao gồm 128 ký tự trong mã ASCII tiêu chuẩn và 128 ký tự trong mã ASCII mở rộng. Trước đây, bảng mã ASCII tiêu chuẩn chỉ có 128 ký tự (0 đến 127 trong hệ thập phân), được biểu diễn bằng 7 ký tự (7 bit) trong hệ nhị phân.

Bảng mã ASCII là bằng má bao nhiêu bits?

ASCII chính xác là mã 7-bit, tức là nó dùng kiểu bit biểu diễn với 7 số nhị phân (thập phân từ 0 đến 127) để biểu diễn thông tin về ký tự.

Ký tự ASCII là gì?

Bảng mã ASCII – American Standard Code for Information Interchange. Hiểu đơn giản bảng mã ASCII có nghĩa là Chuẩn mã trao đổi thông tin Hoa Kỳ. Bảng mã ASCII là hệ thống ngôn ngữ bao gồm các ký tự, mà ký tự được hình thành dựa trên chữ bảng chữ cái Latinh.