Keturi pagrindiniai režimai
Kiekvienas režimas keičia simbolių įvairovę į tankį. Skaitinis režimas tvarko tik skaitmenis, bet tris iš jų supakuoja į 10 bitų, o baitų režimas tvarko bet kurį baitą, bet kiekvienam skiria 8 bitus.
Raidinis ir skaitinis režimas apima 45 simbolių rinkinį: skaitmenis 0–9, didžiąsias raides A–Z, tarpą ir simbolius $ % * + - . / bei dvitaškį. Mažųjų raidžių rinkinyje nėra, todėl visas didžiosiomis raidėmis parašytas URL gali sukurti mažesnį kodą nei tas pats URL mažosiomis.
- Skaitinis: skaitmenys 0–9, 10 bitų 3 skaitmenims
- Raidinis ir skaitinis: 45 simboliai, 11 bitų 2 simboliams
- Baitų: bet kuri 8 bitų reikšmė, 8 bitai baitui
- Kandži: Shift JIS dviejų baitų simboliai, po 13 bitų
Režimo indikatoriai ir segmentai
Kiekviena duomenų atkarpa prasideda 4 bitų režimo indikatoriumi ir simbolių skaičiumi, kurio ilgis priklauso nuo režimo ir versijos. Kode gali būti keli tokie segmentai, pavyzdžiui, skaitinis ilgai skaitmenų eilei ir baitų likusiai daliai, todėl rezultatas gali būti mažesnis.
Kiti 4 bitų indikatoriai žymi funkcijas, o ne simbolių rinkinius: ECI – simbolių kodavimui deklaruoti, structured append – duomenims padalyti per kelis kodus, FNC1 – GS1 ir kitiems pramonės duomenų formatams. Duomenis baigia keturių nulinių bitų terminatorius.
- Skaitinis 0001, raidinis ir skaitinis 0010, baitų 0100, kandži 1000
- ECI 0111, structured append 0011
- FNC1 pirma pozicija 0101, antra pozicija 1001
- Terminatorius 0000
Baitų režimas ir simbolių rinkiniai
Standartinis numatytasis baitų režimo aiškinimas yra ISO-8859-1 (Latin-1), tačiau dauguma šiandienos generatorių rašo UTF-8, kad išliktų diakritinės raidės, kiti rašmenys ir jaustukai. Skaitytuvai UTF-8 paprastai aptinka patikrinę baitus.
Kur simbolių rinkinys turi būti nedviprasmiškas, ECI antraštė gali jį deklaruoti aiškiai. Be jos skaitytuvas kartais gali atspėti neteisingai ir parodyti iškraipytus simbolius.