ASCII là viết tắt của American Standard Code for Information Interchange.
ASCII là một hệ thống dùng các con số để đại diện cho các ký tự.
Ký tự Mã ASCII 'A' 65 'B' 66 'C' 67 'a' 97 'b' 98 '0' 48 '1' 49
cout << int('A');
Kết quả:
65
Ngược lại:
cout << char(65);
Kết quả:
A
ASCII cơ bản sử dụng các mã từ 0 đến 127.
Tổng cộng có 128 ký tự.
Mã từ 0 đến 31. Đây là những ký tự đặc biệt, nhiều ký tự không hiển thị trực tiếp trên màn hình.
32 → Space 33 → ! 34 → " 35 → #
48 → 0 49 → 1 50 → 2 51 → 3 ... 57 → 9
Lưu ý:
'0' = 48
'0' là ký tự số 0, không phải số 0.
65 → A 66 → B 67 → C ... 90 → Z
97 → a 98 → b 99 → c ... 122 → z
Unicode là một hệ thống mã hóa ký tự được tạo ra để hỗ trợ rất nhiều ngôn ngữ và ký hiệu trên thế giới.
Tiếng Anh: A B C Tiếng Việt: Đ Ă Â Ê Ô Ơ Ư Tiếng Trung: 你 好 Tiếng Nhật: あ い Tiếng Hàn: 한 글 Biểu tượng: 😀 ❤️ 🚀
Ký tự Unicode A U+0041 Đ U+0110 你 U+4F60 😀 U+1F600
| Đặc điểm | ASCII | Unicode |
|---|---|---|
| Mục đích | Mã hóa ký tự cơ bản | Mã hóa ký tự của nhiều ngôn ngữ |
| Số lượng mã | 128 mã cơ bản | Rất nhiều mã |
| Tiếng Anh | Có | Có |
| Tiếng Việt | Không đầy đủ | Có |
| Tiếng Trung | Không | Có |
| Tiếng Nhật | Không | Có |
| Tiếng Hàn | Không | Có |
| Emoji | Không | Có |
Có. ASCII là một phần nhỏ của Unicode.
ASCII: 'A' = 65
Trong Unicode:
'A' = U+0041
Mà U+0041 cũng chính là số 65.
Vì vậy, các ký tự ASCII cơ bản vẫn giữ nguyên mã khi được biểu diễn trong Unicode.
ASCII ⊂ Unicode
Điều này có nghĩa là ASCII là một phần của Unicode.
#include <iostream>
using namespace std;
int main() {
char c = 'A';
cout << int(c) << endl;
cout << char(65);
return 0;
}
Kết quả:
65 A
Có thể hiểu:
'A' → 65 65 → 'A'
Nếu chỉ sử dụng ASCII, máy tính sẽ gặp khó khăn khi hiển thị nhiều ký tự trên thế giới:
Đ Ă Â Ê Ô Ơ Ư
Hoặc:
你 好 あ 한 😀
Unicode giúp mỗi ký tự có một mã số riêng.
Đ → U+0110 ă → U+0103 ô → U+00F4 你 → U+4F60 😀 → U+1F600
Unicode và UTF-8 không hoàn toàn giống nhau.
Unicode quy định mỗi ký tự có một mã số.
A → U+0041 😀 → U+1F600
UTF-8
UTF-8 là một cách lưu trữ các mã Unicode trong máy tính.
Ngoài UTF-8 còn có:
Có thể hiểu đơn giản:
Unicode quyết định ký tự có mã số nào.
UTF-8 quyết định cách lưu mã số đó trong bộ nhớ.
So sánh mã ASCII và Unicode giúp lập trình viên học c++ giỏi hơn.