QRkoder

Режим Alphanumeric (Alphanumeric Mode)

Режим кодирования QR-кода для 45 символов: A–Z, 0–9 и спецсимволы. Компактнее байтового: пара символов упаковывается в 11 бит вместо 16. Используется для URL в верхнем регистре, серийных номеров, ваучеров.

Определение

Alphanumeric Mode — один из четырёх базовых режимов кодирования данных в QR-коде по стандарту ISO/IEC 18004. Режим поддерживает ровно 45 символов и упаковывает каждую пару в 11 бит. В потоке QR-кода режим помечается индикатором 0010, после которого идёт счётчик длины и сами данные блоками по два символа.

По компактности Alphanumeric занимает промежуточное место между числовым режимом (10 бит на 3 цифры, ~3,33 бит/символ) и байтовым (8 бит на символ). При 5,5 бит на символ он на 31% эффективнее Byte Mode для совместимых данных.

Алфавит и упаковка битов

Допустимые символы — строго фиксированный набор из 45 позиций:

  • Цифры: 0–9
  • Буквы: A–Z (только заглавные, строчные недопустимы)
  • Спецсимволы: пробел, $, %, *, +, -, ., /, :

Каждому символу присвоен порядковый номер от 0 до 44. Пара символов кодируется формулой: первый × 45 + второй — результат умещается в диапазон 0–2024 и требует ровно 11 бит (2¹¹ = 2048). Если строка нечётной длины, последний одиночный символ кодируется 6 битами.

Пример: пара AC → A=10, C=12 → 10 × 45 + 12 = 462 → 11 бит 00111001110. В Byte Mode те же два символа заняли бы 16 бит.

РежимБит на символАлфавит
Numeric3,330–9
Alphanumeric5,5A–Z, 0–9, 9 спецсимволов
Byte8любой байт UTF-8
Kanji13Shift JIS X 0208

Ёмкость при уровне коррекции ошибок L:

ВерсияРазмерECC LECC MECC QECC H
121×2125201610
537×371541228767
1057×57395311221171
2097×971249969691545
40177×1774296339124201852

Когда использовать

Alphanumeric Mode срабатывает, когда данные состоят исключительно из допустимого алфавита. Типичные случаи:

  • URL в верхнем регистреHTTPS://EXAMPLE.COM/PROMO. Такой формат редко встречается на практике: современные серверы принимают caps-ссылки, но это нишевый сценарий для печатных материалов с короткими заглавными путями.
  • Серийные номера и артикулы — формат SN-A4X92Z или PART/00441 без строчных букв укладывается в Alphanumeric и даёт код версией ниже, чем в Byte Mode.
  • Коды бронирований и ваучеров — авиабилеты, купоны, подарочные карты. Коды бронирований Amadeus и Sabre традиционно используют заглавные латинские буквы и цифры — стандарт де-факто для отрасли с 1970-х.
  • Складские этикетки с смешанным форматом — если строка содержит и буквы, и цифры, и только эти 9 спецсимволов, Alphanumeric выгоднее байтового.

Если в данных появляется хотя бы один символ вне алфавита — строчная буква, кириллица, @, =, &, # — режим автоматически переключается на Byte Mode. Большинство реальных URL содержат строчные буквы или ? и = в параметрах, поэтому для произвольных ссылок используется байтовый режим. QRkoder и библиотеки ZXing, qrencode выбирают Alphanumeric автоматически, ручной выбор не нужен.

Выигрыш относителен длины данных. Для строки из 50 символов Alphanumeric экономит около 125 бит по сравнению с Byte Mode — достаточно, чтобы снизить версию кода на одну ступень и получить матрицу меньшего размера. На коротких строках (до 20 символов) разница незаметна. Подробнее о том, как размер данных влияет на матрицу — в статье про ёмкость QR-кода.

Частые вопросы

Почему алфавит ровно 45 символов, а не 52 или 64?

Стандарт ISO/IEC 18004 выбрал набор из 45 символов, потому что 45 × 45 = 2025 — это чуть меньше 2048 (2¹¹). Пара символов упаковывается в 11 бит с минимальным запасом. Добавь ещё хотя бы один символ — потребовалось бы 12 бит на пару, плотность упала бы. Алфавит спроектирован именно под эту арифметику: ASCII-буквы в верхнем регистре + цифры дают 36 позиций, оставшиеся 9 заняли наиболее распространённые технические символы.

Почему в алфавите нет строчных букв?

Строчные буквы ASCII расположены в диапазоне 97–122, а заглавные — 65–90. Добавить строчные означало бы расширить алфавит до 71 символа, а 71 × 71 = 5041, что не укладывается в 12 бит (4096). Режим пришлось бы переработать. На момент публикации первого стандарта QR в 1994 году большинство промышленных применений (серийники, складские коды, авиабилеты) оперировало заглавными буквами — такой алфавит был достаточным.

Можно ли использовать Alphanumeric для Wi-Fi QR-кода?

Только если SSID и пароль состоят строго из заглавных букв, цифр и девяти допустимых спецсимволов. На практике Wi-Fi пароли почти всегда содержат строчные буквы или символы вроде @, !, # — и весь QR переходит в Byte Mode. Формат Wi-Fi MECARD также включает поля с двоеточием и точкой с запятой: первое входит в алфавит, второе — нет. Генератор определяет режим автоматически, вручную указывать его не нужно.

Как генератор решает, применять Alphanumeric или Byte Mode?

Генератор анализирует каждый символ строки. Если все символы входят в набор из 45 позиций — выбирается Alphanumeric. При первом же несовместимом символе (строчная буква, кириллица, &, =, ?) происходит откат к Byte Mode для всего сегмента. Продвинутые библиотеки поддерживают смешанные сегменты: числовые фрагменты в Numeric, заглавные блоки в Alphanumeric, остальное в Byte — это даёт максимальную компактность, но ZXing и qrencode делают это автоматически.

Как убедиться, что мой QR использует Alphanumeric, а не Byte?

Проверьте входные данные: убедитесь, что нет строчных букв, кириллицы и символов вне набора 0–9 A–Z $ % * + - . / : (плюс пробел). Если хочется верифицировать итоговый код — инструменты ZXing Decoder Online или zbar показывают режим кодирования в метаданных. Также можно сравнить размер версии: одна и та же строка в Alphanumeric должна дать версию на 1–2 ступени ниже, чем в Byte Mode.

Создавайте QR-коды бесплатно

Динамические QR-коды с аналитикой, дизайном и без ограничений по сканированиям.

Начать бесплатно
Alphanumeric Mode в QR-коде: режим кодирования | QRkoder