Extended Channel Interpretation (ECI)

Также называют: ECI, идентификатор ECI, объявление набора символов, расширенная интерпретация канала

Определение

Extended Channel Interpretation (ECI) — это управляющий код внутри штрихкода, который объявляет, как читать следующие за ним байты, например ECI 26 для UTF-8. Многие считыватели его игнорируют и определяют кодировку самостоятельно.

Что делает 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.

Частые вопросы

Нужен ли ECI для текста в UTF-8 в QR-коде?

Обычно нет. Большинство телефонных считывателей распознают UTF-8 автоматически, а ECI может сбить с толку некоторые старые. Он полезнее всего там, где данные нужно интерпретировать точно, например в промышленных системах.

Почему при сканировании QR-код показывает странные символы?

Считыватель мог неверно угадать набор символов для данных в байтовом режиме. Определить причину может помочь объявление UTF-8 через ECI 26 или проверка другим считывателем.

Источники и стандарты

Все термины