Code 39
Линейный буквенно-цифровой штрих-код, кодирующий 26 заглавных букв, цифры 0-9 и семь спецсимволов. Разработан Intermec в 1974 году, не требует обязательной контрольной цифры, широко применяется в промышленности и логистике.
Code 39 (или «Код 3 из 9») — линейный буквенно-цифровой штрих-код, где каждый символ кодируется девятью элементами, из них ровно три широких. Отсюда и название. Разработан Intermec в 1974 году — первый массовый стандарт, кодирующий и цифры, и буквы. Набор — 26 заглавных латинских букв, цифры 0-9 и семь знаков (-, ., пробел, $, /, +, %), плюс «звёздочка» как разделитель в начале и конце строки.
Как устроен Code 39
Широкий элемент втрое шире узкого. Контрольная цифра по модулю 43 опциональна: чаще её не считают. Есть расширение Full ASCII — пара символов кодирует один из 128 знаков, включая строчные. Закодировать строку можно в генераторе штрих-кодов.
Где применяют
- Промышленность и оборона — стандарт MIL-STD-1189.
- Логистика и склады — паллеты, ячейки, внутренние артикулы.
- Идентификация — бейджи, пропуска, библиотечные карты.
- Медицина — образцы и оборудование (HIBC).
Минусы и альтернативы
Главный недостаток — низкая плотность: на знак уходит много места, длинная строка громоздкая. У Code 128 плотность вдвое выше, есть контрольная сумма и полный ASCII — поэтому в рознице и транспортной логистике чаще берут его. Code 39 держится там, где важны простота и совместимость со старым железом.
| Параметр | Code 39 | Code 128 |
|---|---|---|
| Символы | 43 (Full ASCII — 128) | 128 ASCII |
| Контр. цифра | опц. | обяз. |
| Плотность | низкая | высокая |
Частые вопросы
Чем Code 39 отличается от Code 128?
Code 39 кодирует 43 символа без обязательной контрольной цифры, но занимает много места. Code 128 поддерживает 128 знаков ASCII, имеет контрольную сумму и вдвое выше по плотности — компактнее на длинных строках.
Нужна ли в Code 39 контрольная цифра?
Нет, она опциональна. Базовый стандарт работает без неё. Для защиты от ошибок добавляют контрольную цифру по модулю 43 — её поддерживают многие сканеры, но проверку нужно явно включить.
Можно ли закодировать строчные буквы?
В обычном Code 39 — нет, только заглавные латинские буквы. Строчные и прочий ASCII кодирует расширение Full ASCII: одна пара знаков на символ, поэтому строка длиннее. Сканер должен поддерживать режим.