ASCII là viết tắt của American Standard Code for Information Interchange – Chuẩn mã trao đổi thông tin Hoa Kỳ. ASCII là hệ mã hóa ký tự được thiết lập để mã hoá ký tự chữ cái thành các số vì máy tính chỉ hiểu được các con số.
Các bảng ASCII thường hiển thị các số thập lục phân tương ứng với mỗi ký tự chữ cái.\
ASCII là một trong những bảng mã được tiêu chuẩn hóa đầu tiên. Bảng mã này được phát minh vào những năm 1960 khi điện báo là hình thức liên lạc đường dài chủ yếu, tuy nhiên hình thức này vẫn được sử dụng đến nay trên các hệ thống máy tính hiện đại.
Những người đánh máy chữ sẽ nhập tin nhắn trên các máy điện báo như hình ảnh dưới đây:
Sau đó, máy điện báo sẽ sử dụng tiêu chuẩn ASCII để mã hóa từng ký tự đã được nhập dưới dạng nhị phân và lưu trữ hoặc truyền đi dữ liệu nhị phân.
Dưới đây là một trang từ sách hướng dẫn sử dụng máy điện báo năm 1972 có nội dung về 128 mã ASCII:
Mỗi ký tự ASCII được mã hóa dưới dạng nhị phân với 7 bit. Trong bảng trên, tiêu đề cột biểu thị 3 bit đầu tiên và tiêu đề hàng biểu thị 4 bit cuối cùng. Ký tự đầu tiên là “NUL” được mã hóa thành .
32 mã đầu tiên biểu diễn “ký tự điều khiển” là các ký tự tạo ra một số tác động ngoài việc in các chữ cái. Ký tự “BEL” (được mã hóa dưới dạng nhị phân thành ) sẽ tạo ra tiếng chuông hoặc tiếng bíp. Ký tự “ENQ” (được mã hóa là ) biểu diễn sự truy vấn hay còn gọi là yêu cầu để trạm tiếp nhận tự nhận dạng ký tự.
Các ký tự điều khiển ban đầu được thiết kế để phục vụ cho máy điện báo nhưng nhiều ký tự đã được sử dụng lại trong các máy tính hiện đại và Internet, đặc biệt là các ký tự “CR” và “LF”. Ký tự “CR” () đại diện cho ký tự “trở về đầu dòng”, giúp đầu in trên máy điện báo di chuyển đến đầu dòng tiếp theo. Ký tự “LF” () đại diện cho ký tự “xuống dòng” cho đầu in xuống một dòng. Các giao thức Internet hiện đại như HTTP, FTP và SMTP đều sử dụng kết hợp kí tự “CR” + “LF” để biểu diễn khi dòng kết thúc.
96 ký tự ASCII còn lại trông khá quen thuộc với chúng ta.
Dưới đây là 8 chữ cái viết hoa đầu tiên:
Hệ nhị phân | Ký tự |
---|---|
A | |
B | |
C | |
D | |
E | |
F | |
G | |
H |
Theo tiêu chuẩn ASCII, chúng ta có thể mã hóa tin nhắn có bốn chữ cái thành dạng nhị phân:
Vấn đề lớn đầu tiên là ASCII chỉ bao gồm các chữ cái trong bảng chữ cái tiếng Anh và một số biểu tượng nhất định.
Một ngôn ngữ sử dụng ít hơn 128 ký tự có thể tạo ra phiên bản ASCII riêng để mã hóa văn bản viết bằng ngôn ngữ đó. Tuy nhiên, ASCII không thể mã hóa một chuỗi gồm các ký tự từ nhiều ngôn ngữ khác nhau như câu sau: “Hello, José, would you care for Glühwein? It costs 10 €” (“Xin chào José, bạn có muốn uống rượu vang Glühwein không? Chai rượu này có giá 10 €”).
ASCII cũng không thể mã hoá được các ngôn ngữ có hàng nghìn nét như tiếng Trung Quốc. Ví dụ như “你好,想要一盘饺子吗?十块钱。(Xin chào, bạn có muốn gọi một đĩa sủi cảo không? Chỉ 10 tệ thôi.)”
Vấn đề thứ hai là bảng mã ASCII sử dụng 7 bit để biểu diễn mỗi ký tự. Trong khi đó, máy tính thường lưu trữ thông tin theo byte—tương đương với 8 bit. Do đó, các lập trình viên sẽ không muốn lãng phí bộ nhớ của máy tính.
Khi những máy tính đầu tiên bắt đầu sử dụng ASCII để mã hóa ký tự, các máy tính khác nhau sẽ tạo ra vô vàn cách để tận dụng các bit cuối cùng. Ví dụ, máy tính HP sử dụng bit thứ tám để biểu diễn các ký tự được sử dụng ở các nước Châu Âu (như “£” và “Ü”), máy tính TRS-80 sử dụng bit cuối cùng cho đồ họa màu, còn máy tính Atari sử dụng bit này cho phiên bản đảo màu từ chữ đen nền trắng thành chữ trắng trên nền đen của 128 ký tự đầu tiên.
Kết quả là tệp “ASCII” được tạo ra trong một ứng dụng này khi được mở trong một ứng dụng tương thích với “ASCII” khác có thể trông khó hiểu.
Vì vậy, máy tính cần một phương pháp mã hóa mới dựa trên các byte có 8 bit để biểu diễn tất cả các ngôn ngữ trên thế giới.