Байтовый режим QR (Byte mode)
Байтовый режим — универсальный способ кодирования QR: 8 бит на символ, по умолчанию ISO-8859-1, а кириллица и UTF-8 передаются через ECI; вмещает до 2953 байт в версии 40 при уровне L.
Как устроен байтовый режим
Байтовый режим — самый гибкий из режимов кодирования QR: он не привязан к узкому алфавиту, а просто хранит последовательность байтов, по 8 бит на символ. Это единственный режим, который может нести URL с параметрами, произвольный текст, кириллицу, спецсимволы вроде «&», «?», «=» — всё, что не укладывается в цифровой или буквенно-цифровой набор символов.
Кодировка по умолчанию и ECI
Стандарт ISO/IEC 18004 предписывает по умолчанию трактовать байты как ISO-8859-1 (Latin-1) — это латиница и западноевропейские диакритики. Кириллица, эмодзи и большинство спецсимволов в этой кодовой странице не помещаются, поэтому для них применяют UTF-8, где на одну русскую букву уходит уже два байта. Чтобы сканер не перепутал кодировку и не выдал вместо «Привет» набор крякозябр, перед данными ставится индикатор ECI — он явно сообщает, в какой кодовой странице читать байты дальше.
Ёмкость и применение
Плата за гибкость — меньшая плотность: 8 бит на символ против 10 бит на три цифры в числовом режиме. В версии 40 при уровне коррекции L байтовый режим вмещает до 2953 байт — заметно меньше, чем 7089 цифр в цифровом режиме в том же символе. На практике это не критично: байтовый режим почти всегда выбирают не ради экономии места, а потому что данные — ссылка, текст или контакт — попросту не сводятся к цифрам. Именно этим режимом кодируются ссылки на сайты, включая динамические QR-коды с редиректом.