Code 128


Code 128
"Wikipedia" encoded in Code 128-B

Code 128 is a very high-density barcode symbology. It is used for alphanumeric or numeric-only barcodes. It can encode all 128 characters of ASCII and, by use of an extension character (FNC4), the Latin-1 characters defined in ISO/IEC 8859-1[citation needed]. GS1-128 (formerly known as UCC/EAN-128) is a subset of Code 128 and is used extensively world wide in shipping and packaging industries as a product identification code for the container and pallet levels in the supply chain. The symbology was formerly defined as ISO/IEC 15417:2007.

Contents

Specification

"Code 128 sections"
Code 128 sections. 1: Quiet zone, 2: Start/stop character, 3: Encoded data, 4: Check character

A Code 128 barcode will have six sections:

  • Quiet Zone
  • Start Character
  • Encoded Data
  • Check Character
  • Stop Character
  • Quiet Zone

The check character is calculated from a weighted sum (modulo 103) of all the characters.

Subtypes

Code 128 includes 101 symbols: 103 data symbols, 3 start codes, and 1 stop code. To represent all 128 ASCII values, there are three code sets (A, B, C), which can be mixed within a single barcode (by using codes 98 and 99 in code sets A and B, 100 in code sets A and C and 101 in code sets B and C to switch between them):

  • 128A (Code Set A) - ASCII characters 00 to 95 (0-9, A-Z and control codes), special characters, and FNC 1-4
  • 128B (Code Set B) - ASCII characters 32 to 127 (0-9, A-Z, a-z), special characters, and FNC 1-4
  • 128C (Code Set C) - 00-99 (encodes each two digits with one code) and FNC1

Quiet Zone

The quiet zone should be at least ten times the width of the narrowest bar/space element. It is mandatory at the left and right side of the barcode. The quiet zone must not be less than 6.4mm wide.

Start/Stop and Encoded Data

Each character in the barcode symbol is composed of three bars and three spaces. (The stop adds an additional extra bar of length 2.) Each bar or space is 1, 2, 3 or 4 units wide, the sum of the widths of bars must be even, the sum of the widths of the spaces must be odd, and total 11 units per character. For instance, encoding the ASCII value 0 can be viewed as 10011101100, where a 1(One) is a bar and a 0 is a space. A combination which contains a single 1 would be the thinnest line in the bar code. A combination including three 1 (111) in sequence indicates a bar three times as thick as a single 1 bar. More information is available at Barcode Island.

The code uses 107 of the 108 possible patterns that fulfil the required criteria, with the pattern 211133 deliberately remaining unused. This is done to enhance omnidirectional scanning and help prevent misreads (if 211133 represented a legitimate symbol it could be mistaken for the stop code 2331112 when scanned backwards).

Check Digit Calculation

The check digit is a Modulo 103 checksum. It is calculated by summing the start code 'value' to the products of each character's 'value' multiplied by its position in the barcode string. The start character and first encoded value is in position 1. The sum of the start code value and the products is then divided by 103. The remainder of the division is the check digit's 'value' which is then converted into a character (following the instructions given below) and appended to the end of the barcode.

For example, in the following table, the code 128 variant A checksum value is calculated for the alphanumeric string PJJ123C

Weight Code Value Weight x Value
1 Start Code A 103 103
P 48 48
2 J 42 84
3 J 42 126
4 1 17 68
5 2 18 90
6 3 19 114
7 C 35 245
Sum 878
Divisor 103
Sum/Divisor 8.524
Remainder & Check Sum Value 54

Calculating Check Digit With Multiple Variants

As Code 128 allows multiple variants, as well as switching between variants within a single barcode, it is important to remember that the absolute Code 128 value of a character is completely independent of its value within a given variant. For instance the Variant C value "33" and the Variant B value "A" are both considered to be a Code 128 value of 33, and the check digit would be computed based on the value of 33 times the character's position within the barcode. A complete table of Variant B and C values, as well as algorithmic conversion between Code 128 values and ASCII values, is available here.

Conversion To Char

The final conversion is given by the following criteria: if the value to convert is less than 95 then the ASCII value is obtained by adding 32 to the check digit's value; otherwise the ASCII value is obtained adding 105 ( = 32 + 73). This is done to prevent the ASCII value falling within the unwanted range 127-199. Here are some examples:

  Value = 6: 6 + 32 = 38 ('&') ==> OK
  Value = 95: 95 + 32 = 127 ==> WRONG: illegal character; 95 + 105 = 200 ('È') ==> OK

Bar Code Widths

Code128 specifies a combination of 6 bars and spaces for each character except the Stop character, which uses 7. Thus, each character begins with a bar and ends with a space (with the exception of the stop character, which ends in a bar). The following tables detail the widths associated with each bar and space for each character. The width of each bar or space can be 1, 2, 3 or 4 units. Using the example above, an 'A' would be depicted with the pattern 10100011000, or as 111323 in the tables below.

Code 128
Value 128A 128B 128C ASCII Code Character Bar/Space Pattern Bar/Space Weights
0 space space 00 0032 or 0212 Space or Ô 11011001100 212222
1  !  ! 01 33  ! 11001101100 222122
2 " " 02 34 " 11001100110 222221
3 # # 03 35 # 10010011000 121223
4 $ $ 04 36 $ 10010001100 121322
5  %  % 05 37  % 10001001100 131222
6 & & 06 38 & 10011001000 122213
7 ' ' 07 39 ' 10011000100 122312
8 ( ( 08 40 ( 10001100100 132212
9 ) ) 09 41 ) 11001001000 221213
10 * * 10 42 * 11001000100 221312
11 + + 11 43 + 11000100100 231212
12 , , 12 44 , 10110011100 112232
13 - - 13 45 - 10011011100 122132
14 . . 14 46 . 10011001110 122231
15 / / 15 47 / 10111001100 113222
16 0 0 16 48 0 10011101100 123122
17 1 1 17 49 1 10011100110 123221
18 2 2 18 50 2 11001110010 223211
19 3 3 19 51 3 11001011100 221132
20 4 4 20 52 4 11001001110 221231
21 5 5 21 53 5 11011100100 213212
22 6 6 22 54 6 11001110100 223112
23 7 7 23 55 7 11101101110 312131
24 8 8 24 56 8 11101001100 311222
25 9 9 25 57 9 11100101100 321122
26  :  : 26 58  : 11100100110 321221
27  ;  ; 27 59  ; 11101100100 312212
28 < < 28 60 < 11100110100 322112
29 = = 29 61 = 11100110010 322211
30 > > 30 62 > 11011011000 212123
31  ?  ? 31 63  ? 11011000110 212321
32 @ @ 32 64 @ 11000110110 232121
33 A A 33 65 A 10100011000 111323
34 B B 34 66 B 10001011000 131123
35 C C 35 67 C 10001000110 131321
36 D D 36 68 D 10110001000 112313
37 E E 37 69 E 10001101000 132113
38 F F 38 70 F 10001100010 132311
39 G G 39 71 G 11010001000 211313
40 H H 40 72 H 11000101000 231113
41 I I 41 73 I 11000100010 231311
42 J J 42 74 J 10110111000 112133
43 K K 43 75 K 10110001110 112331
44 L L 44 76 L 10001101110 132131
45 M M 45 77 M 10111011000 113123
46 N N 46 78 N 10111000110 113321
47 O O 47 79 O 10001110110 133121
48 P P 48 80 P 11101110110 313121
49 Q Q 49 81 Q 11010001110 211331
50 R R 50 82 R 11000101110 231131
51 S S 51 83 S 11011101000 213113
52 T T 52 84 T 11011100010 213311
53 U U 53 85 U 11011101110 213131
54 V V 54 86 V 11101011000 311123
55 W W 55 87 W 11101000110 311321
56 X X 56 88 X 11100010110 331121
57 Y Y 57 89 Y 11101101000 312113
58 Z Z 58 90 Z 11101100010 312311
59 [ [ 59 91 [ 11100011010 332111
60 \ \ 60 92 \ 11101111010 314111
61 ] ] 61 93 ] 11001000010 221411
62 ^ ^ 62 94 ^ 11110001010 431111
63 _ _ 63 95 _ 10100110000 111224
64 NUL ` 64 96 ` 10100001100 111422
65 SOH a 65 97 a 10010110000 121124
66 STX b 66 98 b 10010000110 121421
67 ETX c 67 99 c 10000101100 141122
68 EOT d 68 100 d 10000100110 141221
69 ENQ e 69 101 e 10110010000 112214
70 ACK f 70 102 f 10110000100 112412
71 BEL g 71 103 g 10011010000 122114
72 BS h 72 104 h 10011000010 122411
73 HT i 73 105 i 10000110100 142112
74 LF j 74 106 j 10000110010 142211
75 VT k 75 107 k 11000010010 241211
76 FF l 76 108 l 11001010000 221114
77 CR m 77 109 m 11110111010 413111
78 SO n 78 110 n 11000010100 241112
79 SI o 79 111 o 10001111010 134111
80 DLE p 80 112 p 10100111100 111242
81 DC1 q 81 113 q 10010111100 121142
82 DC2 r 82 114 r 10010011110 121241
83 DC3 s 83 115 s 10111100100 114212
84 DC4 t 84 116 t 10011110100 124112
85 NAK u 85 117 u 10011110010 124211
86 SYN v 86 118 v 11110100100 411212
87 ETB w 87 119 w 11110010100 421112
88 CAN x 88 120 x 11110010010 421211
89 EM y 89 121 y 11011011110 212141
90 SUB z 90 122 z 11011110110 214121
91 ESC { 91 123 { 11110110110 412121
92 FS 92 124 10101111000 111143
93 GS } 93 125 } 10100011110 111341
94 RS ~ 94 126 ~ 10001011110 131141
95 US DEL 95 200 È 10111101000 114113
96 FNC 3 FNC 3 96 201 É 10111100010 114311
97 FNC 2 FNC 2 97 202 Ê 11110101000 411113
98 Shift B Shift A 98 203 Ë 11110100010 411311
99 Code C Code C 99 204 Ì 10111011110 113141
100 Code B FNC4 Code B 205 Í 10111101110 114131
101 FNC 4 Code A Code A 206 Î 11101011110 311141
102 FNC 1 FNC 1 FNC 1 207 Ï 11110101110 411131
103 Start Code A --- --- 208 Ð 11010000100 211412
104 Start Code B --- --- 209 Ñ 11010010000 211214
105 Start Code C --- --- 210 Ò 11010011100 211232
106 Stop (7 bars/spaces) --- --- 211 Ó 1100011101011 2331112
--- unused to prevent misreading --- --- --- --- --- 211133

The "Code A", "Code B" and "Code C" symbols cause all future symbols to be interpreted according to the corresponding subcode. The "Shift" symbol switches a single following symbol's interpretation between subcodes A and B.

The accoding ASCII char depends on the actual used barcode-font. Especially the ASCII char of value 0 and of value 95 and above can be defined differently in the font that is installed.

The FNCx codes are used for special purposes. FNC1 at the beginning of a bar code indicates that it begins with a 2- 3- or 4-digit application identifier assigned by the Uniform Code Council, which explains the following digits. For example, application identifier 421 indicates that an ISO 3166-1 numeric country code and ship-to postal code follows. For example, the U.S. ZIP code for the White House would generally be printed as "(421) 840 20500", but would actually be coded as "[Start C] [FNC1] 42 18 40 20 50 [Code A] 0 [Check symbol 80] [Stop]"

Availability

For the end user, Code 128 barcodes may be generated by either an outside application to create an image of the barcode, or by a font-based barcode solution. Either solution requires the use of an application or an application add in to calculate the check digit and create the barcode.

External links

Sample code

  • Python Bar Code 128 This code appears to draw boxes 1 pixel wide. It appears it was modified from a short line long line bar code which would have drawn lines. The "Black boxes" should be the same size as the "White Boxes".
  • GenCode128 Free C# source code implementation of Code128. Almost all features are implemented, but is not 100% complete.
  • Barcode::Code128 Free Perl barcode generation module.
  • GOCR Free OCR with Code 128 recognition.
  • Barcode Code 128 Free JavaScript source code implementation of Code128.
  • Barcode4J Free Java API with implementation of Code128 and other standard barcodes.

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Code 128 — В этой статье слишком короткое вступление. Пожалуйста, дополните вводную секцию, кратко раскрывающую тему статьи и обобщающую её содержимое …   Википедия

  • Code 128 — Wikipedia codificado en Code 128 B. Code 128 es un código de barras de alta densidad, usado ampliamente para la logística y paquetería. Puede codificar caracteres alfanuméricos o solo numéricos. Con este código es posible representar todos los… …   Wikipedia Español

  • Code 128 — Le Code 128 est un format de code barres permettant de coder 103 caractères de la table ASCII. Il en existe 3 tables de codage : A, B et C. C est un format courant dans le milieu industriel. Il existe une normalisation qui dérive du Code 128 …   Wikipédia en Français

  • Code 128 — Beispiel für Code128 Der Code128 (1981) ist eine alphanumerische Kodierung mit hoher Informationsdichte, die im Barcode Bereich eingesetzt wird. Der Prinzipaufbau eines Code128 Lesesymbols besteht aus einem Startsymbol, der Nutzinformation, dem… …   Deutsch Wikipedia

  • 128 (number) — 128 (one hundred [and] twenty eight) is the natural number following 127 and preceding 129. ← 127 129 → 128 ← …   Wikipedia

  • Code-barre EAN — Code barres EAN Le code EAN (European Article Numbering) est un code barres utilisé par le commerce et l industrie conformément aux spécifications d’EAN International, organisme aujourd hui remplacé par GS1[1]. Il est connu en France sous le nom… …   Wikipédia en Français

  • Code-barre — Code barres code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée …   Wikipédia en Français

  • Code barre — Code barres code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée …   Wikipédia en Français

  • Code barres — code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée et des… …   Wikipédia en Français

  • Code à barres — Code barres code 128 et code 39 Un code barres, ou code à barres, est la représentation d une donnée numérique ou alphanumérique sous forme d un symbole constitué de barres et d espaces dont l épaisseur varie en fonction de la symbologie utilisée …   Wikipédia en Français


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.