Máy tính chỉ lưu trữ byte. String (str) là dãy ký tự Unicode (đọc được bởi người). Bytes (bytes) là dãy byte giá trị 0-255 (đọc được bởi máy). Cần encode để str → bytes, decode để bytes → str.
Encoding (str → bytes)
text = 'Best Tutorials'
encoded = text.encode('ASCII') # hoặc 'utf-8'
print(encoded) # b'Best Tutorials'
print(type(encoded)) #
Decoding (bytes → str)
data = b'Best Tutorials'
decoded = data.decode('ASCII')
print(decoded) # Best Tutorials
print(type(decoded)) #
Bảng so sánh
| Đặc điểm | String (str) | Bytes (bytes) |
|---|---|---|
| Nội dung | Ký tự Unicode | Byte (0-255) |
| Đọc được | Người | Máy |
| Lưu trữ disk | Cần encode trước | Lưu trực tiếp |
| Tạo literal | 'abc' hoặc "abc" | b'abc' |
| Immutable | Có | Có |
Encoding phổ biến
- UTF-8: Chuẩn事实上, hỗ trợ mọi Unicode, khuyên dùng mặc định.
- ASCII: Chỉ 128 ký tự đầu, lỗi nếu có ký tự khác.
- Latin-1 (ISO-8859-1): 256 ký tự, map 1-1 byte.
Kết luận
Luôn encode/decode tường minh với encoding rõ ràng (ưu tiên UTF-8). Không giả định bytes là text.