چهار حالت اصلی
هر حالت گستره نویسه را با تراکم معاوضه میکند. حالت عددی فقط رقم میپذیرد ولی هر سه رقم را در ۱۰ بیت جا میدهد، در حالی که حالت بایتی هر بایتی را میپذیرد ولی برای هرکدام ۸ بیت مصرف میکند.
حالت الفباییعددی مجموعهای ۴۵ نویسهای را پوشش میدهد: ارقام ۰ تا ۹، حروف بزرگ A تا Z، فاصله و نمادهای $ % * + - . / و دو نقطه. حروف کوچک در این مجموعه نیستند، برای همین یک URL تماماً با حروف بزرگ میتواند کد کوچکتری از همان URL با حروف کوچک بدهد.
- عددی: ارقام ۰ تا ۹، ۱۰ بیت برای هر ۳ رقم
- الفباییعددی: ۴۵ نویسه، ۱۱ بیت برای هر ۲ نویسه
- بایتی: هر مقدار ۸ بیتی، ۸ بیت برای هر بایت
- کانجی: نویسههای دوبایتی Shift JIS، هرکدام ۱۳ بیت
نشانگرهای حالت و قطعهها
هر رشته داده با یک نشانگر حالت ۴ بیتی و شمارنده نویسه شروع میشود که طولش به حالت و نسخه بستگی دارد. یک کد میتواند چند قطعه از این دست داشته باشد، مثلاً عددی برای رشته بلندی از ارقام و بایتی برای بقیه، که میتواند نتیجه را کوچکتر کند.
نشانگرهای ۴ بیتی دیگر ویژگیها را اعلام میکنند نه مجموعه نویسهها: 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 میتواند آن را صریح اعلام کند. بدون آن، خوانشگر گاهی ممکن است اشتباه حدس بزند و نویسههای بههمریخته نشان دهد.