Четирите основни режима
Всеки режим разменя обхват на знаците за плътност. Цифровият режим обработва само цифри, но пакетира по три от тях в 10 бита, докато байтовият режим обработва всеки байт, но изразходва 8 бита за всеки.
Буквено-цифровият режим покрива набор от 45 знака: цифрите 0–9, главните букви A–Z, интервала и символите $ % * + - . / и двоеточие. Малките букви не са в набора, затова URL адрес изцяло с главни букви може да даде по-малък код от същия адрес с малки.
- Цифров: цифри 0–9, 10 бита за 3 цифри
- Буквено-цифров: 45 знака, 11 бита за 2 знака
- Байтов: всяка 8-битова стойност, 8 бита на байт
- Кандзи: двубайтови знаци на Shift JIS, по 13 бита всеки
Индикатори на режима и сегменти
Всяка серия от данни започва с 4-битов индикатор на режима и брой знаци, чиято дължина зависи от режима и версията. Кодът може да съдържа няколко такива сегмента, например цифров за дълга редица от цифри и байтов за останалото, което може да направи резултата по-малък.
Други 4-битови индикатори означават функции, а не набори от знаци: ECI за деклариране на кодиране на знаци, structured append за разделяне на данни между кодове и FNC1 за GS1 и други отраслови формати на данни. Терминатор от четири нулеви бита приключва данните.
- Цифров 0001, буквено-цифров 0010, байтов 0100, кандзи 1000
- ECI 0111, structured append 0011
- FNC1 на първа позиция 0101, на втора позиция 1001
- Терминатор 0000
Байтов режим и набори от знаци
Тълкуването по подразбиране на байтовия режим в стандарта е ISO-8859-1 (Latin-1), но повечето генератори днес записват UTF-8, така че буквите с диакритици, другите писмености и емоджитата да се запазят. Четците обикновено разпознават UTF-8 чрез проверка на байтовете.
Когато наборът от знаци трябва да е недвусмислен, ECI заглавка може да го декларира изрично. Без такава четецът понякога може да налучка погрешно и да покаже изкривени знаци.