Mã hóa là ánh xạ giữa byte và ký tự từ một bộ ký tự, vì vậy sẽ rất hữu ích khi thảo luận và hiểu sự khác biệt giữa byte và ký tự .
Hãy nghĩ về byte là các số từ 0 đến 255, trong khi các ký tự là những thứ trừu tượng như "a", "1", "$" và "". Tập hợp tất cả các ký tự có sẵn được gọi là một bộ ký tự .
Mỗi ký tự có một chuỗi gồm một hoặc nhiều byte được sử dụng để thể hiện nó; tuy nhiên, số lượng và giá trị chính xác của các byte phụ thuộc vào mã hóa được sử dụng và có nhiều mã hóa khác nhau.
Hầu hết các mã hóa dựa trên một bộ ký tự cũ và mã hóa được gọi là ASCII, một byte cho mỗi ký tự (thực tế, chỉ có 7 bit) và chứa 128 ký tự bao gồm rất nhiều ký tự phổ biến được sử dụng trong tiếng Anh Mỹ.
Ví dụ: đây là 6 ký tự trong bộ ký tự ASCII được biểu thị bằng các giá trị 60 đến 65.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
Trong bộ ASCII đầy đủ, giá trị thấp nhất được sử dụng là 0 và cao nhất là 127 (cả hai đều là các ký tự điều khiển ẩn).
Tuy nhiên, một khi bạn bắt đầu cần nhiều ký tự hơn ASCII cơ bản cung cấp (ví dụ: các chữ cái có dấu, ký hiệu tiền tệ, ký hiệu đồ họa, v.v.), ASCII không phù hợp và bạn cần một cái gì đó rộng rãi hơn. Bạn cần nhiều ký tự hơn (một bộ ký tự khác) và bạn cần mã hóa khác vì 128 ký tự là không đủ để phù hợp với tất cả các ký tự. Một số mã hóa cung cấp một byte (256 ký tự) hoặc tối đa sáu byte.
Theo thời gian rất nhiều mã hóa đã được tạo ra. Trong thế giới Windows, có CP1252 hoặc ISO-8859-1, trong khi người dùng Linux có xu hướng ủng hộ UTF-8. Java sử dụng UTF-16 nguyên bản.
Một chuỗi các giá trị byte cho một ký tự trong một mã hóa có thể đại diện cho một ký tự hoàn toàn khác trong một mã hóa khác, hoặc thậm chí có thể không hợp lệ.
Ví dụ, trong ISO 8859-1 , â được biểu thị bằng một byte giá trị 226
, trong khi ở UTF-8, nó là hai byte : 195, 162
. Tuy nhiên, trong ISO 8859-1 , 195, 162
sẽ có hai ký tự, Ã, ,.
Khi máy tính lưu trữ dữ liệu về các ký tự bên trong hoặc truyền nó sang hệ thống khác, chúng sẽ lưu trữ hoặc gửi byte. Hãy tưởng tượng một hệ thống mở tệp hoặc nhận tin nhắn sẽ thấy các byte195, 162
. Làm thế nào để nó biết những nhân vật này là gì?
Để hệ thống diễn giải các byte đó thành các ký tự thực tế (và do đó hiển thị chúng hoặc chuyển đổi chúng sang mã hóa khác), nó cần phải biết mã hóa được sử dụng. Đó là lý do tại sao mã hóa xuất hiện trong các tiêu đề XML hoặc có thể được chỉ định trong trình soạn thảo văn bản. Nó cho hệ thống ánh xạ giữa byte và ký tự.