Văn bản sang nhị phân
Xem các dãy bit nhị phân ẩn sau từng ký tự văn bản.
Khi chuyển chữ cái A sang nhị phân, bạn nhận được dãy gồm tám chữ số: 01000001. Tuy nhiên, nếu chuyển một biểu tượng emoji, kết quả sẽ dài hơn gấp bốn lần do UTF-8 cần mở rộng vượt qua giới hạn bảy bit ban đầu của bảng mã ASCII.
Cấu trúc tám bit của một ký tự văn bản
Chữ cái A mang mã ASCII là 65. Dưới dạng nhị phân, giá trị này tương đương 01000001 — tính từ phải sang trái, các bit tương ứng với những giá trị 1, 2, 4, 8, 16, 32, 64 và 128, trong đó 64 cộng 1 tạo thành 65. Mọi nội dung lưu trữ trong máy tính thực chất là chuỗi gồm các nhóm tám bit này nối tiếp nhau.
Chữ a thường có mã 97, biểu diễn thành 01100001 — tương tự chữ A hoa nhưng bật thêm bit mang giá trị 32. Khoảng lệch 32 vị trí cố định này là nguyên lý phân biệt giữa chữ hoa và chữ thường trong bảng mã.
Sự tương thích giữa ASCII và UTF-8 trong chuyển đổi nhị phân
Bảng mã UTF-8 giữ nguyên 128 ký tự đầu tiên trùng khớp từng byte với ASCII — chỉ sử dụng một byte đơn với chữ số 0 đứng đầu. Nhờ đó, văn bản tiếng Anh thông thường giữ nguyên dạng bit dù công cụ xử lý theo chuẩn ASCII hay UTF-8.
Vượt qua giá trị 127, UTF-8 chuyển sang chuỗi nhiều byte với quy ước nhận diện riêng: byte đầu bắt đầu bằng 110 báo hiệu ký tự hai byte, 1110 báo hiệu ba byte, còn 11110 là bốn byte. Mọi byte tiếp theo luôn bắt đầu bằng 10 để phần mềm nhận biết đây là phần tiếp nối thay vì ký tự mới.
Phân tích nhị phân của ký tự đa byte
Xét ký tự é với mã Unicode 233. Giá trị này không thể vừa trong một byte, nên UTF-8 biểu diễn bằng hai byte: 11000011 10101001, ghi dưới dạng hex là C3 A9. Dãy 110 ở đầu đánh dấu chuỗi hai byte và 10 theo sau đánh dấu byte tiếp nối.
Một biểu tượng emoji nằm ở phạm vi xa hơn, thường cần trọn vẹn bốn byte cho phép của UTF-8 với byte mở đầu chứa tiền tố 11110. Đó là lý do khi tính toán dung lượng theo byte, emoji chiếm nhiều tài nguyên hơn chữ cái cơ bản.
Nguyên nhân bảng mã ASCII làm hỏng ký tự đặc biệt
- ASCII không có mã nào vượt quá 127, do đó không có cơ chế ánh xạ cho các chữ cái có dấu hoặc biểu tượng emoji.
- Nếu phần mềm đọc văn bản từng byte đơn lẻ mà không nhận diện UTF-8, ký tự đa byte sẽ bị tách rời thành các ký hiệu rời rạc vô nghĩa.
- Hiện tượng này dẫn đến lỗi hiển thị văn bản thường gặp, biến nội dung rõ ràng thành chuỗi dấu hỏi chấm hoặc ký tự lạ khi chuyển đổi qua định dạng không tương thích.
Câu hỏi thường gặp về chuyển đổi văn bản sang nhị phân
Một ký tự văn bản thông thường chiếm bao nhiêu bit?
Một ký tự ASCII cơ bản sử dụng tám bit, tương đương một byte. Ký tự UTF-8 ngoài dải ASCII có thể dùng hai, ba hoặc bốn byte, tương đương 16, 24 hoặc 32 bit tùy vào khối Unicode tương ứng.
Tại sao chữ A lại tương ứng với chuỗi nhị phân 01000001?
Chữ A được gán mã thập phân 65 trong tiêu chuẩn ASCII năm 1963. Giá trị 65 đổi sang nhị phân là 01000001 — gồm 64 cộng 1, dựa theo các vị trí bit 1, 2, 4, 8, 16, 32, 64 và 128.
Chuyển đổi văn bản sang nhị phân có làm mất dữ liệu không?
Quá trình này không làm mất dữ liệu khi chuẩn mã hóa được xác định chính xác. Nhị phân chỉ là cách viết khác của chính các byte đang lưu trữ ký tự đó.
Vì sao một số nơi hiển thị 7 bit còn nơi khác lại hiển thị 8 bit?
Chuẩn ASCII gốc chỉ cần bảy bit cho 128 mã ký tự, nhưng hệ thống máy tính lưu trữ theo từng byte 8 bit nên một số 0 thường được chèn thêm ở đầu để lấp đầy byte.
Làm thế nào để dịch ngược mã nhị phân về văn bản gốc?
Bạn chia chuỗi nhị phân thành các nhóm 8 bit, chuyển đổi từng nhóm sang giá trị thập phân rồi tra cứu ký tự tương ứng theo bảng mã đã sử dụng.