Byte mode (QR)
Byte mode — режим кодирования QR-кода с 8 битами на символ. Используется для произвольных данных: UTF-8 текста, кириллицы, URL и бинарных значений. До 2953 байт в QR-40.
Что такое Byte mode
Byte mode — режим кодирования QR-кода (ISO/IEC 18004), идентификатор 0100, 8 бит на символ. По умолчанию — Latin-1; через ECI доступен UTF-8. Максимальная ёмкость — 2 953 байта при QR версии 40 с уровнем коррекции L.
Сравнение с другими режимами
ISO/IEC 18004 определяет четыре режима: Numeric — только цифры (~3,33 бит/цифра); Alphanumeric — заглавная латиница + цифры + 9 спецсимволов (5,5 бит/символ); Byte — 8 бит/байт; Kanji — иероглифы JIS X 0208. Byte mode наименее экономичен, но единственный, куда входят кириллица, строчные буквы и эмодзи. URL с параметрами &, =, # всегда попадает в byte mode.
ECI 26 и UTF-8
Для кириллицы и символов вне Latin-1 генератор добавляет ECI-маркер 26 — сигнал читать байты как UTF-8. iOS 11+ и Android 8+ поддерживают его. Старые промышленные сканеры могут игнорировать ECI — тогда надёжнее динамический QR с ASCII URL.
Частые вопросы
Почему QR-код увеличился после добавления кириллической буквы?
Кириллица недоступна в alphanumeric, поэтому генератор переключается в byte mode. Один UTF-8 символ кириллицы — 2 байта; плюс ECI-заголовок. Объём вырастает на 30–50%, версия QR увеличивается. Выход: динамический QR с ASCII URL.
Сколько кириллических символов помещается в QR?
Один символ — 2 байта. В QR-40 с уровнем L (2 953 байт) — ~1 476 кириллических символов. Текст на 300 знаков — версия 10–12 при уровне M. QRkoder подбирает версию автоматически.
Когда byte mode включается автоматически?
Когда данные содержат строчные буквы, кириллицу или символы &, =, #. Некоторые генераторы поддерживают смешанный режим — сегменты с разными типами данных кодируются отдельными режимами для уменьшения матрицы.
Нужно ли явно указывать ECI 26?
Нет. Библиотеки qr-code-styling, zxing и qrcode добавляют ECI 26 автоматически. Явная настройка нужна только при нестандартных кодировках (Windows-1251).
Чем byte mode отличается от «бинарного режима»?
Это одно и то же. «Byte mode», «8-bit byte mode» и «binary mode» — синонимы, идентификатор 0100.