Chế độ mã hóa

Còn gọi là: Encoding modes, chế độ dữ liệu, chế độ số, chế độ chữ và số, chế độ byte, chế độ kanji

Định nghĩa

Chế độ mã hóa là các cách mã QR nén ký tự thành bit. Bốn chế độ chính là số, chữ và số, byte và kanji, và một mã có thể chuyển đổi giữa chúng.

Bốn chế độ chính

Mỗi chế độ đánh đổi giữa phạm vi ký tự và mật độ. Chế độ số chỉ xử lý chữ số nhưng nén ba chữ số vào 10 bit, còn chế độ byte xử lý mọi byte nhưng tốn 8 bit cho mỗi byte.

Chế độ chữ và số bao gồm bộ 45 ký tự: các chữ số 0–9, các chữ cái in hoa A–Z, dấu cách và các ký hiệu $ % * + - . / cùng dấu hai chấm. Chữ cái thường không có trong bộ này, đó là lý do một URL viết hoa toàn bộ có thể cho mã nhỏ hơn cùng URL đó viết thường.

  • Số: chữ số 0–9, 10 bit cho 3 chữ số
  • Chữ và số: 45 ký tự, 11 bit cho 2 ký tự
  • Byte: mọi giá trị 8 bit, 8 bit mỗi byte
  • Kanji: ký tự hai byte Shift JIS, 13 bit mỗi ký tự

Chỉ báo chế độ và các đoạn

Mỗi đoạn dữ liệu bắt đầu bằng chỉ báo chế độ 4 bit và số lượng ký tự, độ dài của số này phụ thuộc vào chế độ và phiên bản. Một mã có thể chứa nhiều đoạn như vậy, ví dụ chế độ số cho dãy chữ số dài và chế độ byte cho phần còn lại, nhờ đó kết quả có thể nhỏ hơn.

Các chỉ báo 4 bit khác báo hiệu tính năng chứ không phải bộ ký tự: ECI để khai báo bảng mã, nối cấu trúc để chia dữ liệu qua nhiều mã, và FNC1 cho GS1 và các định dạng dữ liệu công nghiệp khác. Một bộ kết thúc gồm bốn bit 0 khép lại dữ liệu.

  • Số 0001, chữ và số 0010, byte 0100, kanji 1000
  • ECI 0111, nối cấu trúc 0011
  • FNC1 vị trí thứ nhất 0101, vị trí thứ hai 1001
  • Bộ kết thúc 0000

Chế độ byte và bộ ký tự

Cách diễn giải mặc định của chế độ byte theo tiêu chuẩn là ISO-8859-1 (Latin-1), nhưng hầu hết trình tạo mã ngày nay ghi UTF-8 để các chữ có dấu, chữ viết khác và emoji không bị hỏng. Đầu đọc thường nhận ra UTF-8 bằng cách kiểm tra các byte.

Khi bộ ký tự cần rõ ràng tuyệt đối, phần đầu ECI có thể khai báo tường minh. Nếu không có, đầu đọc đôi khi đoán sai và hiển thị ký tự loạn.

Câu hỏi thường gặp

Vì sao mã QR của tôi lớn hơn khi dùng chữ thường?

Chữ thường không thuộc bộ chữ và số, nên văn bản phải dùng chế độ byte với 8 bit mỗi ký tự thay vì 5,5. Chữ hoa, chữ số và một vài ký hiệu được nén chặt hơn.

Mã QR có lưu được emoji hoặc văn bản không phải Latin không?

Có, ở chế độ byte dùng UTF-8, được hầu hết trình tạo mã và đầu đọc trên điện thoại hỗ trợ. Mỗi ký tự như vậy chiếm nhiều byte, nên dung lượng giảm.

Một mã QR có thể trộn dữ liệu số và văn bản không?

Có. Dữ liệu có thể chia thành các đoạn, mỗi đoạn có chế độ riêng, và bộ mã hóa tốt chọn cách chia cho ra mã nhỏ nhất.

Nguồn và tiêu chuẩn

Tất cả thuật ngữ