Онлайн-генератор преобразует заданную последовательность символов в стандарт Code 128 в виде готового штрихкода для печати и оптического сканирования. Этот формат представляет собой высокоплотный одномерный буквенно-цифровой код, структура которого регламентирована международным стандартом ISO/IEC 15417:2007. В отличие от простых цифровых символик, спецификация позволяет компактно записывать большой объем разнородной информации на ограниченной площади этикетки. Высокая плотность записи достигается за счет модульного построения штрихов и пробелов разной ширины.
На вход принимается текстовая, чисто цифровая или смешанная строка символов из стандартной таблицы ASCII. Инструмент автоматически обрабатывает введенные латинские буквы разного регистра, арабские цифры, знаки пунктуации и управляющие коды.
Результатом обработки становится графическое изображение линейного штрихкода, полностью готовое к переносу на физические носители или интеграции в электронные документы. Сформированный код содержит все обязательные служебные элементы стандарта, включая стартовый знак, автоматически рассчитанное контрольное значение и стоп-символ. Такие графические идентификаторы напрямую применяются для маркировки товаров, ведения автоматизированного складского учета и отслеживания грузов в логистических цепях.
Формирование штрихкода Code 128 по заданным данным
Преобразование текстовой или числовой строки в графический идентификатор выполняется через последовательное сопоставление пользовательских знаков с таблицей стандарта. В отличие от простого применения декоративного штрихового шрифта к набранному тексту, корректная генерация требует предварительной подготовки строки и включения обязательных служебных маркеров. Без выполнения этих операций оптический сканер не сможет распознать границы графического блока и декодировать заложенную информацию.
Требования к входным данным
Исходным материалом для построения штрихкода выступает произвольная последовательность символов стандарта ASCII. Спецификация допускает свободную длину кодируемой строки, которая на практике ограничивается только физическими размерами целевой этикетки и шириной захвата считывающего устройства. В состав входного набора данных могут входить следующие категории знаков:
- прописные и строчные буквы латинского алфавита для записи текстовых префиксов, кодов складов или наименований серий;
- арабские цифры в любых комбинациях для передачи числовых идентификаторов, партий, дат и порядковых номеров;
- знаки препинания, пробелы, математические операторы и стандартные спецсимволы для визуального и логического разделения смысловых блоков внутри одного кода;
- управляющие коды таблицы ASCII, используемые для автоматической передачи команд оборудованию при сканировании.
Регистр букв и наличие пробелов напрямую влияют на итоговую графическую картину. Строки
BOX-12
и
box-12
преобразуются в разные последовательности полос, так как заглавные и строчные литеры имеют собственные уникальные индексы в кодовой таблице.
Порядок обработки и кодирования строки
Перевод введенных пользователем данных в линейный штрихкод проходит в несколько строго определенных этапов. Нарушение этой последовательности приводит к формированию нечитаемого изображения. Ниже представлена базовая схема трансформации исходной строки в готовый графический символ:
| Этап преобразования | Выполняемая операция | Назначение в структуре кода |
|---|---|---|
| Индексация символов | Перевод каждого отдельного знака или пары соседних цифр во внутренние кодовые значения стандарта Code 128 | Переход от пользовательского текста к числовым индексам спецификации для дальнейших расчетов |
| Инициализация | Добавление служебного знака начала перед информационной частью | Указание сканеру точки старта чтения и выбранного режима интерпретации знаков |
| Контрольный расчет | Математическое вычисление проверочного значения на основе всех задействованных индексов и их позиций | Защита от ошибок распознавания при повреждении, затирании или некачественной печати полос |
| Завершение структуры | Присоединение служебного знака конца после контрольного значения | Фиксация правой границы штрихкода при прямом или обратном движении луча сканера |
| Графическое построение | Отрисовка последовательности темных штрихов и светлых пробелов различной кратной ширины | Формирование контрастного оптического рисунка для физического считывания |
При обработке числовых фрагментов используется принцип уплотнения: вместо посимвольного перевода каждая пара цифр может преобразовываться в одно внутреннее кодовое значение. Это позволяет заметно сократить горизонтальный размер итогового изображения при кодировании длинных цифровых номеров.
Характеристики выходного результата
На выходе формируется валидный линейный штрихкод, полностью готовый к оптическому считыванию. Визуально он представляет собой ряд вертикальных параллельных линий разной толщины, разделенных неравномерными светлыми промежутками. Информация в такой структуре зашифрована именно в соотношении ширин черных штрихов и белых пробелов, поэтому сохранение четкости границ и геометрических пропорций критично для распознавания.
Готовое графическое представление отличается от исходной строки по своему внутреннему составу. Человекочитаемая подпись под полосами отображает только те знаки, которые были поданы на вход. При этом сам штриховой рисунок дополнительно содержит скрытые от глаз оператора служебные знаки начала, конца и рассчитанный проверочный символ. Во время сканирования считыватель обрабатывает всю последовательность целиком, проверяет целостность данных по контрольному значению, отсекает служебные маркеры и передает в учетную систему чистую исходную строку.
Архитектура и структура стандарта Code 128 (ISO/IEC 15417)
Техническое устройство символики регламентируется международной спецификацией ISO/IEC 15417:2007. В отличие от простых дискретных кодов, где знаки разделяются пустыми межсимвольными промежутками, Code 128 имеет непрерывную архитектуру. Это означает, что каждый следующий знак начинается сразу после завершения предыдущего, а вся графическая последовательность выстраивается в единый неделимый блок со строго заданным порядком структурных элементов.
Последовательность компонентов линейного штрихкода
Чтение и декодирование изображения оптическим сенсором происходит от края до края. Чтобы считыватель безошибочно определил границы кода, направление сканирования и содержательную часть, структура штрихкода включает семь последовательных зон и символов.
Ниже приведены обязательные архитектурные компоненты штрихкода Code 128 в порядке их следования слева направо:
| Порядок | Компонент структуры | Международное обозначение | Назначение в архитектуре ISO/IEC 15417 |
|---|---|---|---|
| 1 | Левая свободная зона | Quiet Zone | Чистый светлый участок перед началом кода, необходимый для калибровки оптического датчика на уровень отражения фона |
| 2 | Начальный символ | Start Code A, B или C | Служебный маркер старта, указывающий направление чтения и активирующий нужный базовый набор символов для декодирования |
| 3 | Закодированные символы данных | Data Characters | Основная информационная часть переменной длины, содержащая зашифрованную пользовательскую строку |
| 4 | Контрольный символ | Check Character | Обязательный проверочный знак, подтверждающий целостность считанной последовательности |
| 5 | Символ остановки | Stop Character | Служебный знак, сигнализирующий декодеру о завершении информационного и проверочного блоков |
| 6 | Завершающий штрих | Termination Bar | Финальная темная полоса шириной в 2 модуля, закрывающая последний светлый пробел символа остановки |
| 7 | Правая свободная зона | Quiet Zone | Светлое поле после завершающего штриха, отделяющее штрихкод от остального оформления носителя |
Отсутствие или повреждение любого из этих компонентов делает невозможным распознавание всей цепочки. Например, если обрезать завершающий штрих, последний пробел символа остановки сольется с правой свободной зоной, и считыватель отбросит результат сканирования как неполный.
Принцип модульного построения символов
Внутренняя геометрия каждого знака в стандарте Code 128 базируется на модульной сетке. Модуль представляет собой минимальную неделимую единицу ширины - самый узкий штрих или самый узкий пробел в конкретном штрихкоде. Все остальные черные полосы и светлые промежутки строятся путем кратного увеличения этой базовой величины.
Архитектура отдельного символа подчиняется жестким геометрическим правилам стандарта ISO/IEC 15417:2007:
- Каждый стандартный символ (начальный знак, знак данных или контрольный символ) состоит ровно из 3 темных штрихов и 3 светлых пробелов, которые строго чередуются между собой.
- Любой символ всегда начинается с темного штриха и заканчивается светлым пробелом.
- Суммарная ширина одного стандартного символа всегда постоянна и составляет 11 модулей.
- Ширина каждого отдельного элемента (штриха или пробела) внутри знака варьируется в диапазоне от 1 до 4 модулей.
Комбинация из трех полос и трех промежутков разной кратной толщины (1, 2, 3 или 4 модуля), дающая в сумме число 11, формирует уникальный оптический профиль для каждого из 106 базовых знаков таблицы стандарта. Например, последовательность ширин элементов одного символа может выглядеть как 2-1-2-2-2-2 (сумма равна 11 модулям), где нечетные позиции занимают черные штрихи, а четные - белые пробелы.
Конструктивная особенность финального блока
Единственным исключением из правила 11 модулей является завершающая часть кода. Символ остановки в сочетании с примыкающим к нему завершающим штрихом образует расширенную структуру общей шириной в 13 модулей, которая включает 4 темных штриха и 3 светлых пробела.
Появление четвертого штриха (Termination Bar) обусловлено непрерывной природой символики. Поскольку каждый стандартный знак заканчивается белым пробелом, в середине штрихкода границей этого пробела служит первый черный штрих следующего знака. В самом конце последовательности следующего знака уже нет, поэтому для четкого визуального ограничения последнего пробела стоп-символа от правой свободной зоны добавляется закрывающая темная полоса толщиной в 2 модуля. Такая асимметрия стартового и финального знаков позволяет декодеру мгновенно распознавать двунаправленное сканирование - ситуация, когда луч считывателя проходит по штрихкоду справа налево (вверх ногами).
Подмножества символов Code 128A, Code 128B и Code 128C
Базовая таблица стандарта содержит 106 уникальных графических комбинаций штрихов и пробелов, однако для кодирования всей 128-символьной таблицы ASCII в сочетании со служебными командами этого количества напрямую недостаточно. Чтобы обойти это ограничение без усложнения графической структуры знака, спецификация разделяет кодируемые данные на три логических подмножества: Code 128A, Code 128B и Code 128C. Каждое подмножество назначает одним и тем же внутренним индексам (от 0 до 102) разные выходные значения. То, как именно сканер интерпретирует конкретную 11-модульную комбинацию полос, зависит от выбранного стартового знака или управляющей команды переключения внутри самого штрихкода.
Сравнение характеристик и состава трех базовых подмножеств представлено в таблице ниже:
| Параметр | Набор Code 128A | Набор Code 128B | Набор Code 128C |
|---|---|---|---|
| Основной состав символов | Прописные буквы (A-Z), цифры (0-9), знаки пунктуации | Прописные (A-Z) и строчные (a-z) буквы, цифры (0-9), печатные знаки | Только пары десятичных цифр от 00 до 99 |
| Диапазон кодов ASCII | Коды от 00 до 95 (включая управляющие коды 00-31) | Коды от 32 до 127 (стандартные печатные символы) | Не привязан к одиночным кодам ASCII (числовая компрессия) |
| Плотность записи данных | 1 знак штрихкода = 1 символ строки | 1 знак штрихкода = 1 символ строки | 1 знак штрихкода = 2 цифры строки |
| Типовое назначение | Передача управляющих команд оборудования и верхнего регистра | Кодирование смешанных текстово-цифровых строк и артикулов | Кодирование длинных четных числовых последовательностей |
Специфика наборов Code 128A и Code 128B
Подмножества A и B построены по принципу посимвольного отображения, где один графический знак штрихкода соответствует ровно одному знаку исходного текста. При этом первые 64 позиции внутренней таблицы (индексы от 0 до 63) в обоих режимах полностью совпадают: они отведены под пробел, базовые знаки препинания, цифры от 0 до 9 и заглавные латинские буквы от A до Z. Различия начинаются с индекса 64 до индекса 95.
Режим Code 128A использует этот верхний диапазон для кодирования непечатаемых управляющих символов ASCII с десятичными кодами от 00 до 31 (таких как возврат каретки CR, перевод строки LF, горизонтальная табуляция HT или символ экранирования ESC). Такое кодирование применяется при настройке складских терминалов и кассового оборудования, когда считывание одного штрихкода должно не просто передать текст, но и имитировать нажатие функциональной клавиши для автоматического подтверждения ввода или перехода к следующему полю формы.
Набор Code 128B является основным рабочим режимом для большинства задач товарного учета. В нем позиции с индексами от 64 до 95 заняты строчными латинскими буквами (a-z) и дополнительными печатными знаками (фигурными скобками, тильдой, вертикальной чертой) с кодами ASCII от 96 до 127. Поскольку большинство сериализированных текстовых идентификаторов, партий и буквенно-цифровых номеров не требуют внедрения управляющих аппаратных команд, но часто содержат буквы разного регистра, подмножество B выступает базовым выбором при обработке стандартных текстовых строк.
Высокоплотное сжатие чисел в наборе Code 128C
Подмножество Code 128C работает по принципиально иной логике и предназначено исключительно для записи числовых данных. В этом режиме внутренние индексы стандарта от 0 до 99 жестко привязаны к двузначным десятичным числам от 00 до 99. Один 11-модульный графический знак штрихкода вмещает сразу две цифры исходной строки, за счет чего физическая длина информационной части кода сокращается ровно вдвое по сравнению с наборами A и B.
При использовании набора Code 128C необходимо учитывать следующие технические условия:
- Исходная строка или выделенный числовой фрагмент должны состоять только из арабских цифр от 0 до 9 без пробелов, дефисов, точек и букв.
-
Количество кодируемых цифр в блоке должно быть строго четным, так как данные разбиваются на неразрывные пары (например, строка
480195преобразуется в три символа со значениями48,01и95). - При наличии нечетного количества цифр чистый режим Code 128C применить напрямую нельзя - потребуется либо добавить незначащий ведущий ноль в начало числа (если это допустимо учетной системой), либо закодировать одну крайнюю цифру через переключение в набор A или B.
Механизм переключения между подмножествами внутри одного кода
Спецификация стандарта не требует использовать только один выбранный набор на протяжении всего штрихкода. Если исходная строка содержит разнородные данные - например, буквенный префикс и длинный числовой номер - внутри одного кода применяются специальные управляющие знаки смены режима, позволяющие комбинировать возможности разных таблиц для минимизации итоговой длины полотна.
Управление активным подмножеством осуществляется двумя типами внутренних служебных символов:
- Команды полного перехода (Code A, Code B, Code C) - переключают декодер в указанный режим для всех последующих знаков вплоть до конца штрихкода или до появления следующей команды перехода.
- Команда одиночного сдвига (Shift) - временно изменяет текущий режим между наборами A и B только для одного следующего за ней символа, после чего интерпретация автоматически возвращается к исходному набору без дополнительной закрывающей команды.
Такое комбинирование применяется при формировании сложных комбинированных идентификаторов. Например, при кодировании строки
AB-12345678
использование только набора B потребовало бы 11 символов данных (по одному на каждый знак). Оптимизированная последовательность начнется со стартового знака Start B, запишет три символа
A
,
B
,
-
, затем вставит служебный знак перехода Code C и упакует оставшиеся восемь цифр
12345678
всего в четыре символа парами (
12
,
34
,
56
,
78
). Даже с учетом добавления самого служебного знака переключения общее количество символов данных сократится с 11 до 8, что уменьшит ширину готового штрихкода на 33 модуля.
Если же в длинной числовой строке из 9 цифр (например,
987654321
) нужно сохранить компактность без добавления ведущего нуля, последовательность начинается со знака Start C, кодирует первые восемь цифр четырьмя парами (
98
,
76
,
54
,
32
), затем включает знак перехода Code B и дописывает последнюю нечетную цифру
1
в посимвольном режиме. В случае, когда среди текста в нижнем регистре (набор B) встречается один управляющий символ или в строке верхнего регистра с управляющими кодами (набор A) присутствует одна строчная буква, вставка знака Shift экономит место по сравнению с двойным вызовом команд полного перехода туда и обратно.
Алгоритм расчета контрольного символа по модулю 103
Для защиты закодированной строки от ошибок считывания при загрязнении поверхности, неравномерном освещении или механическом повреждении полос в стандарте Code 128 предусмотрена обязательная математическая проверка целостности. В отличие от символик, где проверочный знак является опциональным, здесь каждый валидный штрихкод включает контрольный символ, вычисляемый по алгоритму Modulo 103. При сканировании считывающее устройство самостоятельно пересчитывает контрольную сумму по прочитанным штрихам и сопоставляет полученное значение со знаком, стоящим непосредственно перед символом остановки. Если значения не совпадают, сканер блокирует передачу данных в учетную систему, предотвращая ввод искаженного артикула или номера.
Математическая логика расчета строится не на кодах таблицы ASCII и не на самих печатных знаках, а на внутренних числовых индексах таблицы символов Code 128 (значения от 0 до 105) и позиционных весах каждого элемента в последовательности. Учет порядкового номера (веса позиции) гарантирует обнаружение ошибок транспозиции - ситуаций, когда два соседних знака случайно меняются местами или считываются в неверном порядке.
Пошаговое правило вычисления Modulo 103
Процедура определения проверочного знака выполняется по единому регламенту независимо от длины исходной строки и выбранного подмножества кодирования:
-
Определение базового слагаемого: берется внутреннее числовое значение выбранного стартового символа -
103для Start A,104для Start B или105для Start C. Стартовый знак входит в сумму со своим номиналом (что эквивалентно весу позиции, равному 1). -
Назначение весов позиций: каждому последующему знаку в закодированной цепочке (начиная с первого символа данных сразу после стартового знака) присваивается порядковый номер
1, 2, 3, ..., n. В этот ряд входят как информационные знаки, так и любые служебные команды переключения наборов (например,Code CилиShift), если они присутствуют внутри кода. -
Взвешенное умножение: внутренний табличный индекс каждого символа (число от
0до102) умножается на его порядковый номер (вес позиции). - Суммирование: к значению стартового символа прибавляются все полученные произведения.
-
Нахождение остатка от деления: итоговая взвешенная сумма делится на
103, и выделяется целочисленный остаток от этого деления (число в диапазоне от0до102). -
Формирование контрольного символа: найденный остаток сопоставляется со стандартной таблицей знаков Code 128. Графическая комбинация штрихов и пробелов, соответствующая этому индексу, вставляется в конец цепочки данных перед знаком
Stop.
В человекочитаемой текстовой подписи под полосами штрихкода контрольный символ никогда не отображается. Он служит исключительно для внутренней верификации сигнала декодером сканера и не передается в итоговую строку данных на компьютер или терминал.
Примеры расчета в одном и комбинированном наборах
Для демонстрации работы алгоритма рассмотрим кодирование короткой строки
AB12
в стандартном буквенно-цифровом наборе Code 128B. По таблице стандарта используемые элементы имеют следующие внутренние индексы:
Start B
= 104,
A
= 33,
B
= 34,
1
= 17,
2
= 18. Расчет взвешенной суммы распределяется по позициям следующим образом:
| Элемент последовательности | Символ | Табличный индекс (Значение) | Вес позиции (Порядковый номер) | Произведение (Индекс × Вес) |
|---|---|---|---|---|
| Стартовый символ |
Start B
|
104 | 1 (базовый) | 104 |
| 1-й символ данных |
A
|
33 | 1 | 33 × 1 = 33 |
| 2-й символ данных |
B
|
34 | 2 | 34 × 2 = 68 |
| 3-й символ данных |
1
|
17 | 3 | 17 × 3 = 51 |
| 4-й символ данных |
2
|
18 | 4 | 18 × 4 = 72 |
Суммирование всех полученных величин дает:
104 + 33 + 68 + 51 + 72 = 328
. Далее выполняется деление общей суммы на 103 с выделением целой части и остатка:
328 / 103 = 3
(так как
103 × 3 = 309
), а остаток составляет
328 - 309 = 19
. В таблице стандарта Code 128 индексу
19
соответствует печатный знак
3
(в наборах A и B) или цифровая пара
19
(в наборе C). Именно штриховой паттерн с индексом
19
размещается в штрихкоде после знака
2
и перед символом
Stop
.
При использовании комбинированного кодирования с переключением подмножеств алгоритм учитывает служебные команды перехода наравне с обычными данными. Если рассмотреть разобранную ранее оптимизированную строку
AB-12345678
, где после первых трех знаков в наборе B вставляется команда
Code C
(табличный индекс
99
) для сжатия восьми цифр в четыре пары, расчет охватывает 8 взвешенных позиций:
| Позиция в коде | Закодированный элемент | Активный набор | Табличный индекс | Вес позиции | Вклад в сумму |
|---|---|---|---|---|---|
| Старт |
Start B
|
Набор B | 104 | 1 (базовый) | 104 |
| Позиция 1 |
A
|
Набор B | 33 | 1 | 33 |
| Позиция 2 |
B
|
Набор B | 34 | 2 | 68 |
| Позиция 3 |
-
|
Набор B | 13 | 3 | 39 |
| Позиция 4 |
Code C
(переход)
|
Набор B → C | 99 | 4 | 396 |
| Позиция 5 |
Пара
12
|
Набор C | 12 | 5 | 60 |
| Позиция 6 |
Пара
34
|
Набор C | 34 | 6 | 204 |
| Позиция 7 |
Пара
56
|
Набор C | 56 | 7 | 392 |
| Позиция 8 |
Пара
78
|
Набор C | 78 | 8 | 624 |
Итоговая сумма произведений равна:
104 + 33 + 68 + 39 + 396 + 60 + 204 + 392 + 624 = 1920
. При делении
1920
на
103
целая часть составляет
18
(поскольку
103 × 18 = 1854
), а остаток от деления равен
1920 - 1854 = 66
. В результате перед стоп-символом дописывается графический элемент с внутренним индексом
66
. Сам символ остановки (
Stop
, индекс
106
) в расчете контрольной суммы никогда не участвует, так как он замыкает структуру штрихкода уже после проверочного знака.
Специальные управляющие символы и производные форматы (GS1-128)
Помимо печатных знаков и команд переключения между кодовыми наборами, таблица стандарта включает четыре специальных функциональных символа:
FNC1
,
FNC2
,
FNC3
и
FNC4
. Они не имеют собственного текстового отображения в подписи под штрихкодом, но участвуют в расчете контрольного значения наравне с обычными данными и передают сканирующему оборудованию инструкции по обработке считываемой строки.
| Функциональный символ | Доступность в наборах | Внутренний индекс (Value) | Техническое назначение при декодировании |
|---|---|---|---|
FNC1
|
Наборы A, B, C |
102
|
Указывает на соответствие структуры данных формату GS1-128 (при размещении сразу после стартового знака) или служит разделителем полей переменной длины. |
FNC2
|
Наборы A, B |
97
|
Дает команду считывателю временно сохранить текущую строку в буфер памяти и объединить ее со содержимым следующего отсканированного штрихкода перед отправкой в учетную систему. |
FNC3
|
Наборы A, B |
96
|
Используется для инициализации и настройки параметров самого сканера штрихкодов (служебные управляющие штрихкоды в руководствах к оборудованию). |
FNC4
|
Набор A (
101
), Набор B (
100
)
|
101
или
100
|
Переключает интерпретацию кодов на расширенную таблицу ASCII (символы с десятичными кодами от 128 до 255) путем прибавления 128 к коду базового знака. |
Механизм работы знака
FNC4
расширяет возможности базовых семибитных таблиц до восьмибитного стандарта ISO/IEC 8859-1 (Latin-1). Одиночный символ
FNC4
перед буквой или знаком в наборах A или B увеличивает ASCII-код только одного следующего за ним элемента на 128 единиц. Если в структуру штрихкода вставлены два символа
FNC4
подряд, режим расширенной таблицы ASCII фиксируется для всех последующих знаков до конца штрихкода или до повторного дублирования
FNC4
, которое возвращает декодер в стандартный диапазон (0-127).
Структура логистического формата GS1-128 и идентификаторы AI
Графическая символика Code 128 выступает физическим носителем данных для международного стандарта GS1-128 (ранее известного как UCC/EAN-128). Визуально и по правилам модульного построения полос эти два формата идентичны. Техническое отличие заключается в строгом синтаксисе данных и наличии обязательной стартовой комбинации: сразу за начальным символом (
Start A
,
Start B
или
Start C
) на первой позиции данных размещается функциональный знак
FNC1
с индексом
102
.
Обнаружив связку стартового знака и
FNC1
, сканер понимает, что внутри зашифрована не произвольная строка, а структурированный набор атрибутов цепи поставок, разделенный с помощью AI. Каждый AI представляет собой числовой префикс из 2, 3 или 4 цифр, который жестко определяет назначение и формат следующего за ним поля данных. В текстовой расшифровке под штрихкодом префиксы AI для удобства чтения заключаются в круглые скобки, однако в сами штрихи скобки никогда не кодируются.
В логистической и товарной маркировке чаще всего задействуются следующие стандартные префиксы AI:
-
(00)- серийный код транспортной упаковки SSCC-18, состоящий строго из 18 цифр и служащий для сквозного отслеживания паллет и грузовых мест. -
(01)- глобальный номер товарной позиции GTIN из 14 цифр, идентифицирующий тип групповой или розничной упаковки. -
(10)- номер партии или серии (Batch/Lot Number), содержащий до 20 буквенно-цифровых знаков переменной длины. -
(15)и(17)- минимальный срок годности (Best Before) и окончательная дата истечения срока годности (Expiration Date), записываемые в фиксированном шестизначном форматеГГММДД. -
(21)- индивидуальный серийный номер конкретного экземпляра продукции (до 20 символов переменной длины).
Объединение нескольких атрибутов в один линейный код (конкатенация) требует разграничения полей. Если поле имеет строго фиксированную длину согласно спецификации GS1 - например,
(01)
всегда занимает 14 цифр, а дата
(17)
всегда состоит из 6 цифр - то следующий префикс AI записывается сразу вплотную без разделителей. Если же в середину цепочки попадает атрибут переменной длины, такой как номер партии
(10)
или серийный номер
(21)
, то сразу после его фактического окончания в структуру штрихкода повторно вставляется символ
FNC1
. В этом месте он выполняет роль разделителя группы (Group Separator, код
ASCII 29
), сигнализируя сканеру об окончании текущего поля и начале следующего префикса AI. Для последнего поля в штрихкоде разделитель
FNC1
не нужен, так как границей служит проверочный символ и знак
Stop
.
Отраслевые спецификации HIBC и VDA 4902
Высокая плотность записи и надежность алгоритма Modulo 103 сделали базовую архитектуру стандарта основой для узкопрофильных отраслевых регламентов за пределами системы GS1. В этих стандартах не используется префикс
FNC1
на первой позиции, а структура строки определяется внутренними правилами конкретной индустрии.
В сфере здравоохранения и производства медицинских изделий применяется стандарт HIBC Code 128. Он предназначен для маркировки хирургических инструментов, имплантатов, лабораторных реагентов и упаковки препаратов. Строка данных в формате HIBC всегда начинается со знака плюс (
+
), за которым следует четырехбуквенный идентификатор производителя (LIC), код продукта, тип единицы измерения и, при необходимости, вторичные данные (срок годности и номер партии), отделенные косой чертой (
/
). Завершается структура дополнительным проверочным знаком по алгоритму Modulo 43, который встраивается непосредственно в текстовую строку перед расчетом штатной контрольной суммы самого штрихкода.
В европейской автомобильной промышленности для сопровождения поставок комплектующих между заводами и подрядчиками действует стандарт транспортных этикеток VDA 4902. Регламент использует стандартные наборы Code 128 для размещения в отдельных графах этикетки номера накладной, кода поставщика, артикула детали, количества штук в таре и серийного номера тарного места. Каждое поле на бланке VDA 4902 снабжается собственным одиночным штрихкодом со строгим буквенным или цифровым префиксом в начале строки, что исключает запись данных в неверную графу базы данных при поочередном сканировании этикетки на приемке.
Геометрические и визуальные требования к готовому штрихкоду
Независимо от того, используется ли базовый вариант символики или отраслевые профили, безошибочное распознавание штрихкода оптическими сканерами напрямую зависит от соблюдения его геометрических пропорций и цветовых характеристик. Любое нарушение линейных размеров или контрастности приводит к тому, что считыватель не может отделить графический символ от окружающего дизайна упаковки или корректно замерить соотношение между черными и белыми полосами.
Линейные размеры: X-dimension, габаритная длина и высота
Базовой единицей измерения при построении графики служит ширина минимального элемента - узкого штриха или пробела в один модуль (параметр X-dimension, обозначаемый как
X
). От выбранного значения
X
масштабируются все остальные элементы символа. Чем меньше величина
X
, тем компактнее получается изображение, однако чрезмерное уменьшение повышает требования к точности нанесения линий и оптическим возможностям считывающего оборудования.
Общая габаритная длина готового штрихкода не является фиксированной и складывается из нескольких переменных факторов:
- количества закодированных символов во входной строке данных;
- выбранного подмножества (при кодировании четного количества цифр в наборе C физическая длина блока данных сокращается вдвое по сравнению с наборами A и B);
- наличия внутри строки управляющих знаков переключения между наборами, каждый из которых добавляет к общей длине дополнительные 11 модулей;
-
заданной ширины единичного модуля
Xи обязательных пустых полей по краям.
Для расчета точной физической ширины штрихкода вместе с боковыми отступами (в миллиметрах или дюймах) общее число задействованных модулей умножается на размер
X
. Ниже приведено сравнение модульной протяженности кода для строки из 12 цифр при использовании разных режимов кодирования.
| Параметр структуры | Кодирование в наборе A или B | Кодирование в наборе C |
|---|---|---|
| Стартовый символ | 11 модулей (1 знак) | 11 модулей (1 знак) |
| Полезные данные (12 цифр) | 132 модуля (12 знаков по 11 модулей) | 66 модулей (6 пар цифр по 11 модулей) |
| Контрольный символ | 11 модулей (1 знак) | 11 модулей (1 знак) |
| Символ остановки с завершающим штрихом | 13 модулей | 13 модулей |
| Суммарная ширина штриховой зоны | 167 модулей | 101 модуль |
| Две свободные зоны по краям (минимум 20X) | 20 модулей | 20 модулей |
| Итоговая протяженность символа | 187 модулей | 121 модуль |
Высота полос не несет в себе закодированной информации, но отвечает за удобство и скорость наведения луча считывателя. При ручном сканировании человек редко держит устройство строго перпендикулярно вертикальным линиям. Если штрихи будут слишком низкими (усеченными по высоте), наклоненный луч сканера выйдет за верхнюю или нижнюю границу кода раньше, чем пересечет всю последовательность от старта до стоп-символа. По стандарту рекомендуется выдерживать высоту полос не менее 15 процентов от общей длины штрихкода, чтобы обеспечить уверенный захват всей цепочки штрихов с первого проведения луча.
Свободные зоны (Quiet Zones)
Слева от первого штриха стартового знака и справа от завершающего штриха стоп-символа обязательно оставляются пустые светлые поля - свободные зоны (quiet zones, или зоны молчания). Минимальная ширина каждого такого отступа должна составлять не менее 10 кратных ширин узкого модуля (
10X
).
Назначение зоны молчания - дать оптическому датчику сканера четкий эталон фонового отражения света перед началом отсчета чередования штрихов и пробелов, а также зафиксировать завершение кода. На практике отказ в считывании технически правильного штрихкода часто происходит именно из-за нарушения границ
10X
. В пределах левого и правого свободных полей категорически запрещено размещать рамки таблиц, декоративные линии, логотипы, текст или придвигать код вплотную к физическому краю носителя. Если в области
10X
окажется посторонний темный элемент, считыватель воспримет его как дополнительный штрих, что нарушит 11-модульную структуру крайнего знака и заблокирует декодирование.
Цветовая схема и контрастность
Работа оптического считывателя основана на измерении разницы коэффициентов отражения света от темных и светлых участков. Светлая подложка отражает излучение обратно в фотоприемник сканера, а темные полосы поглощают его. Для безотказного распознавания штрихкод должен иметь максимальный контраст: темные штрихи на однородном светлом фоне. Оптимальным сочетанием является глубокий черный цвет полос на матовом белом основании.
При выборе альтернативных цветовых решений для дизайна упаковки необходимо учитывать физические ограничения спектра считывающих лучей:
- Запрет на красный цвет для штрихов. Многие модели считывателей подсвечивают код красным лазером или светодиодом (длина волны около 630-670 нанометров). В красном спектре красные, оранжевые, желтые и светло-коричневые полосы полностью отражают свет точно так же, как и белый фон. В результате для сканера такой штрихкод становится абсолютно невидимым. Допустимо использовать для штрихов темно-синий, темно-зеленый или темно-коричневый цвета, так как они поглощают красный спектр, однако черный остается наиболее надежным вариантом.
- Требования к фону. Светлое основание под штрихами и в зонах молчания не должно быть прозрачным, зеркальным или металлизированным (бликующим). В отличие от штрихов, фон как раз может быть желтым, оранжевым или светло-красным, поскольку в красном свете лазера эти оттенки выглядят как белые и дают высокий коэффициент отражения.
- Недопустимость цветовой инверсии. Формирование светлых (белых) штрихов на черном или темном фоне в стандарте Code 128 не допускается для общего применения. Стандартные считыватели настроены на поиск темного стартового штриха после светлой зоны молчания и не смогут распознать негативное изображение без предварительной аппаратной перенастройки самого сканера на чтение инвертированных кодов.
Человекочитаемый текст под штрихкодом
Под графической частью штрихкода располагается строка человекочитаемого текста - цифровая и буквенная индикация закодированных данных. Этот элемент предназначен для визуального контроля со стороны персонала и позволяет ввести код вручную с клавиатуры в случае механического повреждения или загрязнения полос, делающего автоматическое сканирование невозможным.
В человекочитаемой подписи отображаются только передаваемые информационные символы. Служебные элементы архитектуры - стартовый символ, знаки переключения наборов (Code A, B, C, Shift), рассчитанный контрольный символ по модулю 103 и знак остановки - в текстовую строку под кодом не выводятся. Текст набирается четким, легко различимым шрифтом (как правило, без засечек или моноширинным, чтобы исключить путаницу между похожими знаками, такими как цифра
0
и буква
O
, цифра
1
и строчная
l
) и размещается с небольшим зазором под нижним краем штрихов, не сливаясь с ними. Vertically центрировать или жестко привязывать каждую букву под конкретным штриховым символом не требуется, поскольку в наборе C одна группа из трех штрихов кодирует сразу два знака, а наличие скрытых служебных кодов смещает визуальное соответствие между графикой и текстом.
Применение штрихкодов Code 128 в складском учете, логистике и на маркетплейсах
Способность формата Code 128 компактно размещать цифровые и текстовые строки переменной длины делает его базовым инструментом для автоматизации товародвижения. В отличие от розничных кассовых стандартов, требующих обязательной регистрации в международных базах и допускающих только фиксированное количество цифр, эта символика свободно адаптируется под внутреннюю архитектуру баз данных конкретного предприятия или правила внешних торговых площадок.
Внутренний складской учет и инвентаризация
В замкнутых учетных контурах предприятий (склады, производственные цеха, офисы, архивы) структура идентификаторов разрабатывается самой компанией. Поскольку такие коды не выходят на внешние розничные кассы, для их генерации не требуется внешняя сертификация. Сгенерированный штрихкод Code 128 решает задачу быстрого безошибочного ввода сложных составных обозначений в учетную систему при сканировании.
На практике внутрискладская маркировка охватывает четыре основных направления:
-
Кодирование товарных артикулов SKU. Внутренние артикулы редко состоят только из цифр - обычно в них зашифрованы категория, бренд, размер, цвет или модификация изделия через дефисы и латинские буквы (например,
EL-CAB-USB3-2MилиSHIRT-BLK-XL). Формат Code 128 передает такие комбинации без потери знаков препинания и регистра. -
Учет серийных номеров оборудования. Производители электроники, бытовой техники, инструмента и комплектующих наносят на корпус изделия или гарантийный талон индивидуальный серийный номер (например,
SN-2026-089412A). Штрихкод позволяет мгновенно фиксировать конкретный экземпляр при отгрузке, сервисном ремонте или возврате. - Инвентаризация основных средств и имущества. При проведении плановых ревизий мебели, оргтехники, серверных стоек или спецтранспорта каждой единице присваивается инвентарный номер. Наклейка со штрихкодом избавляет сотрудников от ручного переписывания длинных номеров с балансовых ведомостей.
-
Адресное хранение и маркировка складских ячеек. Для навигации комплектовщиков на стеллажные балки, паллетные места и контейнеры наносятся штрихкоды с координатами места хранения. Строка вида
Z1-R04-S02-B05однозначно указывает зону, ряд, ярус и ячейку, исключая размещение груза на чужой полке.
Логистика и цепи поставок
При перемещении грузов между производственными площадками, распределительными центрами, таможенными терминалами и транспортными компаниями единицей учета выступает не отдельный товар, а грузовая единица - короб, мешок, контейнер или паллета. В логистических операциях штрихкод Code 128 используется для формирования транспортных этикеток.
На групповую тару и паллеты наносятся идентификаторы грузовых мест, номера транспортных накладных, коды маршрутов сортировки и номера заказов. Когда паллета или гофрокороб проходит через конвейерную линию сортировочного хаба либо зону приемки, сканер считывает линейный код и сопоставляет физический груз с электронной накладной в системе управления складом. Если логистический оператор работает по стандартизированным межотраслевым правилам, на базе этой же графической символики формируются расширенные паллетные этикетки с идентификаторами применения.
Работа с маркетплейсами и платформами электронной коммерции
Крупные торговые площадки и службы фулфилмента (Wildberries, Amazon FBA, Ozon, Shopify и аналогичные экосистемы) предъявляют строгие регламентные требования к маркировке как отдельных товарных единиц, так и транспортных партий. Ошибки в формате штрихкода на этапе приемки приводят к обезличиванию товара или отказу в отгрузке на склад маркетплейса.
В инфраструктуре маркетплейсов генерация кодов по стандарту Code 128 применяется в нескольких рабочих процессах:
-
Маркировка грузовых коробов и паллет при поставке. При отгрузке партии товара по схеме продажи со склада площадки продавец формирует упаковочные листы. Например, для поставок на склады Wildberries используются уникальные штрихкоды коробов (ШК коробов WB вида
WB_BOX_12345678) и штрихкоды самой поставки, которые генерируются и печатаются в формате Code 128. По этому коду сотрудники склада привязывают содержимое коробки к конкретному личному кабинету поставщика. -
Индивидуальные баркоды товаров на Amazon FBA. Если товар на Amazon не отслеживается по общему фабричному коду производителя, ему присваивается внутренний буквенно-цифровой идентификатор сети фулфилмента FNSKU, начинающийся с префикса
X00. Правила платформы требуют наносить этот код на каждую единицу товара в виде штрихкода Code 128 (либо его подмножеств). - Карточки товаров на мультиканальных платформах. В системах управления интернет-магазинами (например, на базе Shopify) и при размещении уникальных товаров собственного производства на маркетплейсах, допускающих использование символики Code 128 для товарных единиц, продавец может сгенерировать штрихкод на основе числовой последовательности из личного кабинета или собственного артикула.
В таблице ниже сведены типовые примеры входных строк и особенности формирования штрихкода Code 128 для различных учетных и логистических задач:
| Сфера применения | Объект маркировки | Пример входной строки | Задействованное подмножество | Назначение в учетной системе |
|---|---|---|---|---|
| Складской учет | Индивидуальная упаковка товара |
SKU-450-RED-M
|
Code 128B (текст, цифры, дефисы) | Идентификация номенклатурной позиции при сборке заказа |
| Адресное хранение | Стеллажная ячейка или лоток |
A02-14-03-01
|
Code 128B или комбинация B + C | Подтверждение взятия или размещения товара в конкретной точке склада |
| Инвентаризация | Офисное и промышленное оборудование |
000482910452
|
Code 128C (сжатие пар цифр) | Быстрая сверка фактического наличия имущества с бухгалтерским балансом |
| Поставки на маркетплейсы | Транспортный гофрокороб (ШК короба) |
WB_BOX_8492015
|
Code 128B с переключением в C | Приемка грузового места на сортировочном центре торговой площадки |
| Фулфилмент (Amazon FBA) | Потребительская упаковка единицы товара |
X001A2B3C4
|
Code 128B (буквенно-цифровой код FNSKU) | Привязка конкретного экземпляра товара к аккаунту продавца на складе хранения |
При подготовке этикеток для внешних торговых площадок перед вводом данных важно сверяться с актуальной офертой и технической документацией конкретного маркетплейса. Некоторые платформы разрешают использовать в баркодах самой товарной единицы только чисто цифровые последовательности даже внутри контейнера Code 128, тогда как для транспортных коробов и накладных наоборот требуют обязательного наличия буквенных префиксов.
Особенности печати на этикетках и считывания сканерами
Перенос готового изображения штрихкода на физический носитель требует точного соблюдения технологии печати и учета характеристик сканирующего оборудования. Даже математически верный код со всеми служебными знаками не будет распознан на складе или кассе, если при печати нарушится кратность ширины штрихов и пробелов либо снизится оптическая контрастность отпечатка.
Технологии переноса на самоклеящиеся носители
В логистике, розничной торговле и на производстве для маркировки применяются специализированные принтеры этикеток, работающие по двум основным технологиям формирования изображения.
- Прямая термопечать предполагает нагрев термочувствительного слоя бумажной термоэтикетки непосредственно печатающей головкой принтера. Под воздействием температуры в точках соприкосновения бумага темнеет, формируя полосы кода без использования красящих расходных материалов. Такие носители чувствительны к трению, прямым солнечным лучам, влаге и перепадам температур, из-за чего со временем фон этикетки желтеет или сереет, а сами штрихи выцветают. Прямая термопечать подходит для маркировки товаров с коротким сроком реализации, а также для формирования временных транспортных и сортировочных наклеек.
- Термотрансферная печать (ТТ печать) осуществляется путем переноса красящего пигмента со специальной ленты - риббона - на поверхность полуглянцевых бумажных или синтетических полипропиленовых самоклеящихся лент при нагреве печатающей головки. В зависимости от состава красящего слоя риббона (восковой, восково-смоляной или чисто смоляной) отпечаток приобретает высокую устойчивость к истиранию, влаге, бытовой химии и ультрафиолету. ТТ печать используется для инвентарных табличек, адресного хранения на неотапливаемых складах, паллетных листов и маркировки товаров длительного хранения.
При любом способе печати направление движения ленты через принтер влияет на четкость границ элементов. Оптимальным считается расположение штрихкода, при котором его полосы ориентированы параллельно направлению протяжки этикетки (продольная печать). В этом режиме каждая точка печатающей головки формирует непрерывную вертикальную линию, что исключает ступенчатость краев. При поперечном развороте кода ("лесенкой") малейшие колебания скорости протяжного вала или перегрев нагревательных элементов могут исказить толщину отдельных штрихов.
Согласование ширины модулей с разрешением печатающей головки
Точность воспроизведения пропорций напрямую зависит от физического разрешения печатающей головки принтера, измеряемого в точках на дюйм (DPI). Поскольку в стандарте Code 128 толщина штрихов и пробелов принимает четыре различных значения (от 1 до 4 базовых модулей), при выводе на печать ширина самого узкого элемента должна состоять из целого числа физических точек термоголовки.
Если ширина минимального модуля при масштабировании макета этикетки окажется дробной величиной относительно сетки принтера (например, 2,4 точки), драйвер печатного устройства принудительно округлит размеры элементов в большую или меньшую сторону. В результате один одномодульный штрих будет напечатан толщиной в 2 точки, а соседний - в 3 точки, при этом ширина пробелов между ними сократится. На плотных кодах с большим количеством символов такое искажение пропорций приводит к визуальному слиянию соседних полос и отказу при сканировании.
Параметры физического разрешения стандартных принтеров этикеток и соответствующие им размеры печатных элементов приведены в таблице:
| Разрешение принтера | Плотность точек на 1 мм | Размер одной точки (1 dot) | Оптимальная кратность узкого штриха | Рекомендуемое применение |
|---|---|---|---|---|
| 203 DPI | 8 точек/мм | 0,125 мм | От 2 до 4 точек (0,250-0,500 мм) | Крупные транспортные этикетки, маркировка гофрокоробов и паллет |
| 300 DPI | 12 точек/мм | 0,084 мм | От 3 до 5 точек (0,252-0,420 мм) | Универсальная товарная маркировка, средние складские этикетки и бирки |
| 600 DPI | 24 точки/мм | 0,042 мм | От 4 до 8 точек (0,168-0,336 мм) | Миниатюрные этикетки для электроники, ювелирных изделий, лабораторных пробирок и кабелей |
При подготовке макета к выводу на печать также необходимо отключить в настройках графического редактора или драйвера сглаживание краев и режим вписывания изображения в границы страницы. Наличие полутоновых серых пикселей по краям черных полос на оборудовании с разрешением 203 DPI и 300 DPI приводит к образованию паразитного растра и размытию четких границ между штрихом и пробелом.
Считывание и декодирование сканерами
Готовый отпечатанный штрихкод на кассовых узлах, сортировочных линиях и складах считывается с помощью ручных или стационарных сканеров, а также встроенных считывателей терминалов сбора данных (ТСД). В зависимости от конструкции оптического модуля оборудование использует разные принципы захвата и декодирования графической последовательности:
- Лазерные сканеры формируют узкий пучок света с помощью системы качающихся зеркал, который быстро пробегает поперек штрихкода в виде тонкой горизонтальной линии. Фотодиод прибора улавливает интенсивность отраженного от светлых пробелов луча и его поглощение темными штрихами, преобразуя световую пульсацию в электрический сигнал. Такие устройства позволяют считывать крупные этикетки на значительном расстоянии (вплоть до нескольких метров на высотных складах), но требуют точного позиционирования линии луча поперек всех полос кода и не способны распознавать изображение с экранов мобильных устройств или при сильном механическом повреждении ленты.
- Светодиодные считыватели (CCD) освещают область маркировки группой встроенных светодиодов и проецируют отраженную картинку на линейную светочувствительную матрицу. В отличие от лазерных моделей, они не содержат подвижных механических деталей, благодаря чему устойчивы к падениям и вибрациям, однако имеют ограниченную дальность фокусировки и требуют поднесения сканера близко к этикетке.
- Фотосканеры (2D Imager) работают по принципу цифровой фотокамеры: они делают мгновенный двумерный снимок всей области маркировки и передают кадр во встроенный микропроцессор для программного анализа геометрии полос. Фотосканеры на кассовых терминалах и складских ТСД отличаются всенаправленностью - оператору не нужно выравнивать прицельную линию строго перпендикулярно штрихам. Кроме того, алгоритмы обработки изображения позволяют успешно декодировать штрихкоды Code 128 с потертых, мятых или частично оторванных этикеток, под слоем упаковочной стретч-пленки, при слабом внешнем освещении, а также непосредственно с дисплеев смартфонов и мониторов.
При нанесении этикетки на товарную упаковку следует избегать наклеивания штрихкода поверх углов коробки, сварных швов пакета или сильных изгибов тары. Если часть штрихов окажется в разных плоскостях или будет закрыта глянцевым бликующим скотчем, оптический датчик считывателя зафиксирует искажение ширины пробелов, что приведет к ошибке проверки контрольного значения и отклонению операции сканирования.
Отличия Code 128 от линейных форматов Code 39, EAN-13 и ITF-14
Выбор подходящей одномерной символики зависит от структуры исходной строки, доступной площади на носителе и требований учетной системы, в которой будет сканироваться маркировка. Несмотря на внешнее сходство линейных кодов, каждый стандарт проектировался под строго определенные эксплуатационные условия и не является универсальной заменой для остальных.
Ниже приведено прямое сопоставление ключевых характеристик распространенных линейных стандартов, определяющих сферу их применения:
| Параметр | Code 128 | Code 39 | EAN-13 / UPC-A | ITF-14 |
|---|---|---|---|---|
| Допустимый набор символов | Полная таблица ASCII (128 знаков, включая строчные и прописные буквы, цифры и спецсимволы) | 43 символа в базовом режиме (A-Z, 0-9, пробел и знаки - . $ / + %) | Только десятичные цифры (0-9) | Только десятичные цифры (0-9) |
| Длина кодируемой строки | Переменная | Переменная | Фиксированная (13 цифр для EAN-13, 12 цифр для UPC-A) | Фиксированная (14 цифр) |
| Плотность записи данных | Высокая (особенно при сжатии пар цифр в подмножестве C) | Низкая (требует много места по горизонтали) | Средняя (адаптирована под розничную упаковку) | Средняя (крупные модули для печати на грубых поверхностях) |
| Контрольный символ | Обязательный встроенный (по модулю 103) | Необязательный в базовой спецификации (по модулю 43) | Обязательный (последняя цифра кода по модулю 10) | Обязательный (последняя цифра кода по модулю 10) |
| Основное назначение | Складской учет, логистика, маркетплейсы, маркировка артикулов и серийных номеров | Промышленная маркировка деталей, старые учетные системы, внутренний документооборот | Розничная торговля, сканирование штучного товара на кассовых узлах POS | Маркировка транспортных коробов и гофротары в оптовом звене |
Сравнение с буквенно-цифровым стандартом Code 39
Оба формата предназначены для кодирования смешанных текстово-числовых строк переменной длины во внутреннем учете и промышленности, однако Code 128 технически совершеннее своего предшественника. Главное отличие заключается в плотности компоновки элементов и охвате знаков таблицы ASCII.
В базовой конфигурации Code 39 поддерживает только заглавные латинские буквы, цифры и семь специальных знаков. Чтобы закодировать в нем строчную букву или дополнительный символ пунктуации, необходимо активировать расширенный режим Full ASCII, в котором один текстовый знак формируется комбинацией сразу двух символов штрихкода. Это увеличивает физическую длину полосы вдвое. В Code 128 поддержка строчных букв и полного набора ASCII реализована напрямую через выбор нужного кодового подмножества без удвоения количества графических знаков.
При кодировании чисто числовых последовательностей разрыв в компактности становится еще заметнее. За счет попарного уплотнения цифр в наборе C штрихкод Code 128 занимает примерно в два-три раза меньше места по ширине, чем аналогичная строка в Code 39 при одинаковой толщине минимального штриха. Это критично при печати на узких термоэтикетках для мелких деталей, кабелей, пробирок или ювелирных бирок.
Кроме того, архитектура Code 39 не требует обязательного включения проверочного знака, из-за чего частичное загрязнение этикетки или наклон луча сканера иногда приводят к подмене одного символа другим при декодировании. В Code 128 проверочное значение по модулю 103 является неотъемлемой частью структуры, что практически исключает передачу искаженной строки в базу данных.
Отличия от товарных штрихкодов EAN-13 и UPC-A
Попытка заменить розничный штрихкод форматом Code 128 или наоборот - частая ошибка при подготовке товара к продаже. Эти символики решают принципиально разные задачи и не взаимозаменяемы на кассовом оборудовании.
- Форматы EAN-13 и UPC-A созданы исключительно для идентификации потребительской единицы товара на кассах розничных магазинов POS. Они принимают только цифры и имеют жестко заданную разрядность: ровно 13 или 12 цифр соответственно. В них нельзя зашифровать буквенный артикул продавца, номер партии или произвольное слово.
- Вся структура EAN-13 и UPC-A подчинена глобальной системе товарной нумерации, где префикс указывает на национальную организацию, далее следует код производителя, код конкретного продукта и финальная контрольная цифра. Напечатать произвольный набор из 13 цифр для выхода в розничную сеть нельзя - номер должен быть официально зарегистрирован.
- Стандарт Code 128, напротив, не имеет ограничений по фиксированному числу знаков и свободно принимает буквы, дефисы, косые черты и любые печатные знаки ASCII. Его используют там, где кассовые терминалы розницы не задействованы: внутри складов, на сортировочных центрах маркетплейсов, в курьерских службах и на производстве. Если торговая площадка или внутренняя система учета допускает генерацию собственных баркодов без регистрации в глобальном реестре, Code 128 позволяет перевести в штрихкод уже существующий внутренний артикул товара как есть.
Выбор между Code 128 и транспортным форматом ITF-14
При маркировке групповой упаковки и отгрузочной тары возникает выбор между печатью этикетки со штрихкодом Code 128 и нанесением кода ITF-14. Оба стандарта применяются в складской логистике, но рассчитаны на разные способы печати и разный объем передаваемых сведений.
Символика ITF-14 кодирует строго 14 цифр (чаще всего это глобальный номер торговой единицы для транспортного короба) и отличается низкой требовательностью к качеству поверхности. Ее главная конструктивная особенность - широкая черная защитная рамка по периметру, которая нужна для выравнивания давления печатных форм при прямой флексографической или струйной печати непосредственно на буром волокнистом гофрокартоне. Крупные штрихи ITF-14 уверенно считываются сканерами с большого расстояния даже при низкой контрастности бурого фона и неровностях картона.
Формат Code 128 устроен гораздо тоньше и требует высокой точности соблюдения ширины четырёх градаций модулей и пробелов. Из-за этого его не печатают краской прямо по грубому картону ящика - для него необходима гладкая белая самоклеящаяся термоэтикетка или термотрансферная лента. Взамен Code 128 дает возможность передавать на одной этикетке сложные буквенно-цифровые идентификаторы коробов, коды поставок для маркетплейсов или длинные составные строки с несколькими параметрами груза, что технически невозможно реализовать в рамках 14 цифр стандарта ITF-14.