Bộ Mã Unicode Dụng Bao Nhiêu Byte để Mã Hóa 1 Ký Tự

Ảnh của Kelvin Yan trên UnsplashẢnh của Kelvin Yan trên UnsplashMáy tính có ngôn từ riêng. Họ không hiểu ngôn từ của con người ( hoàn toàn có thể họ hiểu nếu bạn nói hệ nhị phân ), và họ không biết gì ngoài hệ nhị phân. Làm thế nào để tất cả chúng ta tiếp xúc với họ ?Khi tôi đang gõ, máy tính không phân biệt được bất kể ký tự nào bạn đang thấy. Hãy xem xét ký tự M. Ở Lever thấp nhất, M được tàng trữ sử dụng một chuỗi những 0 s và 1 s : 01001101. Trước khi liên tục, hãy nhớ lại hai định nghĩa cơ bản :

Bit – đơn vị lưu trữ nhỏ nhất, chỉ có thể lưu trữ 0 hoặc 1Byte – một byte = tám bit. Đó là nó.

Bạn đang đọc: Bộ mã Unicode dụng bao nhiêu byte để mã hóa 1 ký tự

Mục Lục

  • Unicode
  • Bộ ký tự
  • Hệ thống mã hóa
  • UTF-32
  • UTF-16 (+ LE & BE)
  • UTF-8
  • UTF-8 so với UTF-16

Unicode

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 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-8
  • UTF-16
  • UTF-32
  • EUC

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:

Xem thêm: Tổng đài Agribank – Số Hotline CSKH 24/24 [Update T4/2021] – Vibank

00000000 00000000 00000000 0100000100000000 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 0100000101000001 00000000int *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 :0100110101001101Mở 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.txt0000000: 0100001 00001010$ du -b test.txt | cut -f12$ file test.txttest.txt: UTF-8 Unicode text$ du -b test.txt | cut -f13$ xxd -b test.txt0000000: 11001110 10110100 0000101011001110 1011010011001110 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.

Xem thêm: Giới thiệu công ty Artelia Việt Nam và những dự án quản lý

Đối với những ký tự ASCII cơ bản, UTF-8 sẽ chỉ sử dụng một byte cho mỗi ký tự, trong khi mã hóa UTF-16 sẽ sử dụng hai byte ( điều này làm cho UTF-8 thích hợp ngược với ASCII ) .Bây giờ tất cả chúng ta hãy nói về những trường hợp mã hóa UTF-8 chiếm nhiều byte hơn UTF-16. Hãy xem xét vần âm Trung Quốc 語 – mã hóa UTF-8 của nó là :11101000 10101010 1001111010001010 1001111011101000 10101010 10011110 10001010 10011110

Từ khóa » Bộ Mã Unicode Dùng Bao Nhiêu Bit để Mã Hóa Các Ký Tự