Dört ana mod
Her mod, karakter aralığından yoğunluk için taviz verir. Sayısal mod yalnızca rakamları işler ama üçünü 10 bite paketler; bayt modu ise her baytı işler ama her birine 8 bit harcar.
Alfanümerik mod 45 karakterlik bir kümeyi kapsar: 0–9 rakamları, A–Z büyük harfleri, boşluk ve $ % * + - . / simgeleri ile iki nokta. Küçük harfler kümede yoktur; bu yüzden tamamı büyük harfli bir URL, aynı URL'nin küçük harfli halinden daha küçük bir kod verebilir.
- Sayısal: 0–9 rakamları, 3 rakam için 10 bit
- Alfanümerik: 45 karakter, 2 karakter için 11 bit
- Bayt: herhangi bir 8 bitlik değer, bayt başına 8 bit
- Kanji: Shift JIS çift baytlı karakterler, her biri 13 bit
Mod göstergeleri ve segmentler
Her veri dizisi, 4 bitlik bir mod göstergesi ve uzunluğu moda ve sürüme bağlı bir karakter sayısıyla başlar. Bir kod, birkaç böyle segment içerebilir; örneğin uzun bir rakam dizisi için sayısal, geri kalanı için bayt; bu da sonucu küçültebilir.
Diğer 4 bitlik göstergeler karakter kümelerini değil özellikleri işaretler: karakter kodlamasını bildirmek için ECI, veriyi kodlar arasında bölmek için structured append ve GS1 ile diğer sektör veri biçimleri için FNC1. Dört sıfır bitlik bir sonlandırıcı veriyi bitirir.
- Sayısal 0001, alfanümerik 0010, bayt 0100, kanji 1000
- ECI 0111, structured append 0011
- FNC1 birinci konum 0101, ikinci konum 1001
- Sonlandırıcı 0000
Bayt modu ve karakter kümeleri
Standardın bayt moduna varsayılan yorumu ISO-8859-1'dir (Latin-1); ama bugün çoğu üretici, aksanlı harflerin, diğer yazı sistemlerinin ve emojilerin korunması için UTF-8 yazar. Okuyucular genellikle UTF-8'i baytlara bakarak algılar.
Karakter kümesinin belirsiz olmaması gereken yerlerde bir ECI başlığı bunu açıkça bildirebilir. Başlık yoksa okuyucu ara sıra yanlış tahmin edip bozuk karakterler gösterebilir.