Что делает ECI
ECI сообщает считывателю, какой набор символов или какая интерпретация данных относится к следующим байтам. Без него считывателю приходится принимать значение по умолчанию или угадывать по самим байтам.
ECI не уникален для QR-кодов. Схему определила AIM, отраслевая ассоциация штрихкодов, и её поддерживают также Data Matrix, Aztec Code, PDF417, MaxiCode и другие символики.
Как он кодируется в QR-коде
Сегмент ECI начинается с индикатора режима 0111, за которым следует номер идентификатора ECI длиной от одного до трёх байтов. Интерпретация действует до конца данных или пока другой ECI её не изменит.
- ECI 3: ISO-8859-1 (Latin-1)
- ECI 20: Shift JIS
- ECI 26: UTF-8
- Идентификаторы лежат в диапазоне от 0 до 999999
Поддержка на практике
Поддержка ECI неравномерна. Промышленные и документные сканеры часто её учитывают, а многие приложения камер на телефонах игнорируют и определяют UTF-8 по анализу, чего для большинства современного содержимого достаточно.
Некоторые старые считыватели не ожидают заголовка ECI и могут показать лишние символы или не разобрать содержимое. Для обычных URL и простого текста большинство генераторов опускают ECI и полагаются на определение UTF-8.