Oba standardy służą do tego samego - kodowania dowolnej treści zdefiniowanej przez Ciebie, bez rejestracji w GS1 - ale różnią się na tyle, że wybór ma realne znaczenie dla wielkości etykiety i zgodności ze sprzętem.

Zestaw znaków

Code-39 koduje cyfry, wielkie litery i garść znaków specjalnych (- . $ / + % oraz spację) - małe litery trzeba zamienić na wielkie. Code-128 koduje cały zestaw ASCII, łącznie z małymi literami, więc treść nie wymaga żadnej normalizacji przed zakodowaniem.

Gęstość zapisu

Code-128 koduje dane wydajniej - ten sam tekst wychodzi jako węższy symbol niż w Code-39. Ma to znaczenie na małych etykietach, gdzie liczy się każdy milimetr szerokości.

Suma kontrolna

W Code-128 suma kontrolna jest obowiązkową częścią symbolu - dolicza się automatycznie i nie da się jej pominąć. W Code-39 suma kontrolna jest opcjonalna i w praktyce rzadko stosowana - symbol polega głównie na czytelności samego wzoru kresek.

Kompatybilność ze sprzętem

Code-39 to starszy standard (lata 70.), używany też w normach wojskowych (LOGMARS) - czytają go praktycznie wszystkie skanery, łącznie z bardzo starymi. Code-128 jest nowszy i dominuje w nowoczesnej logistyce (to on stoi za GS1-128), ale sporadycznie można trafić na wyjątkowo stary sprzęt, który go nie obsługuje.

Skąd bierze się różnica w szerokości - konkretne liczby

W Code-39 każdy znak zajmuje stałe 13 modułów (9 elementów, z których 3 są szerokie, plus przerwa między znakami - przy proporcji 2:1). Do tego dochodzą obowiązkowe znaki start i stop (gwiazdka), każdy również po 13 modułów. W Code-128 znak danych ma 11 modułów, a w podzbiorze C jeden znak koduje od razu dwie cyfry. Symbol zamyka suma kontrolna (11 modułów) i znak stopu (13 modułów).

TreśćCode-39Code-128Różnica
123456789012 znaków × 13 = ok. 155 modułówstart + 5 par cyfr + suma + stop = 90 modułówCode-128 węższy o ok. 42%
MAGAZYN-A1213 znaków × 13 = ok. 168 modułówstart + 11 znaków + suma + stop = 156 modułówCode-128 węższy o ok. 7%
ABCDEFGHIJKLMNOPQRST22 znaki × 13 = ok. 285 modułówstart + 20 znaków + suma + stop = 255 modułówCode-128 węższy o ok. 11%

Przy module 0,25 mm (typowa drukarka etykiet 203 dpi, 2 kropki na moduł) dziesięć cyfr w Code-39 potrzebuje ok. 39 mm szerokości bez cichych stref, a w Code-128 tylko ok. 22 mm. Dla treści czysto numerycznej przewaga jest więc ogromna; dla tekstu z literami - umiarkowana, ale wciąż po stronie Code-128. Jak to przekłada się na konkretne rolki etykiet, opisujemy w poradniku jak wydrukować kod kreskowy na etykiecie.

Trzy podzbiory Code-128: A, B i C

Code-128 nie ma jednej tablicy znaków, tylko trzy, przełączane w trakcie symbolu:

Dobry koder wybiera podzbiory automatycznie i przełącza się między nimi w środku symbolu, żeby zminimalizować jego długość - na przykład „ABC" zakoduje w B, a następujące po nich „123456" w C. Nasz generator Code-128 robi tę optymalizację bez udziału użytkownika, więc nie trzeba niczego ustawiać ręcznie.

Jak działa suma kontrolna w Code-128

Każdy znak Code-128 ma wartość od 0 do 102. Suma kontrolna to wartość znaku startu plus suma iloczynów (wartość znaku × jego pozycja, licząc od 1), wszystko modulo 103. Wynik koduje się jako zwykły znak tuż przed znakiem stopu. Skaner liczy to samo po odczycie i jeśli wynik się nie zgadza, odrzuca skan. To inny mechanizm niż cyfra kontrolna EAN (modulo 10 z wagami 1 i 3), opisana w poradniku jak obliczyć cyfrę kontrolną - i w odróżnieniu od niej nie jest widoczna w tekście pod kodem.

W Code-39 analogiczna, opcjonalna suma to modulo 43 - ale skoro większość czytników ma ją domyślnie wyłączoną, w praktyce odczyt Code-39 chroni tylko redundancja samego wzoru kresek. Dla etykiet magazynowych, gdzie błędny odczyt oznacza wysyłkę złej palety, to istotny argument za Code-128.

Częste pytania

Czy Code-128 zeskanuje telefon?

Tak - każda aplikacja skanująca i większość aparatów systemowych czyta zarówno Code-128, jak i Code-39. Możesz to sprawdzić od razu w naszym skanerze online.

Czy mogę użyć Code-128 na produkcie sprzedawanym w sklepie?

Nie do oznaczania towaru przy kasie - systemy sklepowe oczekują tam EAN-13 z numerem GS1. Code-128 może natomiast pojawić się na tym samym opakowaniu jako dodatkowy kod wewnętrzny albo - w wersji GS1-128 - na opakowaniu zbiorczym.

Co z małymi literami w Code-39?

Istnieje rozszerzenie „Code-39 Full ASCII", w którym małe litery i pozostałe znaki koduje się parami znaków (np. +A oznacza a). Symbol robi się przez to dwa razy dłuższy, a skaner musi mieć włączony odpowiedni tryb. Jeśli potrzebujesz małych liter, Code-128 jest po prostu lepszym narzędziem.

Który kod jest łatwiejszy do wydruku na słabej drukarce?

Code-39 ma tylko dwie szerokości elementów (wąski i szeroki), Code-128 aż cztery. Przy bardzo słabym druku, gdzie kreski rozlewają się nierówno, Code-39 bywa odrobinę bardziej odporny. Na każdej sprawnej drukarce etykiet 203 dpi i lepszej różnica jest nieistotna.

Który wybrać