파일:Code 39 Barcode Example.png 코드 39 바코드 라벨 
 Code 39로 변환한 \* WIKIPEDIA \* 
**코드 39**는 가변 길이의 개별 바코드다.

코드 39는 대문자 (A ~ Z), 숫자 (0-9) 및 특수 문자 (-,. $, /, +, % 및 공백 )로, 총 43자로 구성된다. 추가 글자( '\*'로 표시됨)는 시작 구분 기호와 종료 구분 문자 모두에 사용된다. 각 문자는 9 개의 요소로 구성된다 : 5 개의 막대와 4 개의 공백. 각 문자의 9 개 요소 중 3 개는 넓고 (2 진 값 1) 6 개 요소는 좁다. (2 진 값 0) 너비와 너비 간의 너비 비율은 중요하지 않으며 1 : 2에서 1 : 3 사이에서 선택할 수 있다.

바코드 자체에는 확인 숫자가 포함되지 않지만 (코드 128과 대조적으로), 잘못 해석된 단일 막대가 다른 유효한 문자를 생성할 수 없다는 이유로 자체 검사로 간주될 수 있다. 코드 39의 가장 심각한 단점은 낮은 데이터 밀도다. 예를 들어 코드 128보다 코드 39에서 데이터를 인코딩하는 데 더 많은 공간이 필요하다. 즉, 아주 작은 제품에는 코드 39 기반 바코드로 레이블을 지정할 수 없다. 그러나, 비록 코드 39는 여전히 몇몇 우편 서비스에 의해 사용된다. (만국 우편 연합은 모든 경우에 코드 (128)를 사용할 것을 권장하고, ) 거의 모든 바코드 리더로 디코드할 수 있다. 코드 39의 장점 중 하나는 체크 디지트를 생성할 필요가 없기 때문에 바코드 글꼴을 시스템이나 프린터에 추가한 다음 해당 글꼴로 데이터를 인쇄하여 기존 인쇄 시스템에 쉽게 통합할 수 있다는 것이다.
Code 39는 1974년 David Allais 와 Intermec의 Ray Stevens가 개발했다. 그들의 원래 디자인은 두 개의 넓은 막대와 각 문자에 하나의 넓은 공간을 포함하여 40 개의 가능한 문자를 만들었다. 이 문자 중 하나를 시작 및 중단 패턴으로 남겨두면 39 자가 남았다. 이 문자는 Code 39라는 이름의 기원이었다. 나중에 4 개의 구두점 문자가 추가되어 넓은 막대와 3 개의 넓은 공백을 사용하지 않고 문자 세트를 43 자로 확장했다. Code 39는 나중에 ANSI MH 10.8 M-1983 및 MIL-STD-1189로 표준화되었다. 그리고 MIL-STD-1189는 취소되고 ANSI / AIM BC1 / 1995, 통일 기호 표준 - 코드 39로 대체되었다.

인코딩
---

아래 표시된 **\*** 문자는 실제 인코딩 가능 문자는 아니지만 코드 39의 시작 및 중지 기호다. 기호의 비대칭성은 판독기로 하여금 스캔되는 바코드의 방향을 결정하게 한다. 이 코드는 전통적으로 바코드 글꼴의 '\*' 문자에 매핑되며 바코드와 함께 사람이 읽을 수 있는 표현으로 표시된다.

 코드 39 문자 
일반적으로 두 개의 넓은 막대의 위치는 1에서 10 사이의 숫자를 인코딩하는 것으로 간주될 수 있으며 넓은 공간의 위치 (네 개의 가능한 위치가 있음)는 문자를 네 개의 그룹 중 하나로 분류하는 것으로 간주될 수 있습니다 ( 왼쪽에서 오른쪽으로) : 문자 (+30) (U-Z), 숫자 (+0) (1-9,0), 문자 (+10) (A-J) 및 문자 (+20) 티). 예를 들어, 문자 P (알파벳의 16 번째 문자)는 숫자 6을 나타내기 위해 막대가 정렬되어 있고 맨 오른쪽 위치의 공백은 그룹 문자 (+20)를 선택한다.

숫자로 표현 될 때 숫자 "10"은 숫자 0을 인코딩하는 데 사용된다. 왜냐면 문자 (+ 30) 그룹에는 문자가 6 개 (문자 30-35 또는 U-Z)이므로 이 그룹의 나머지 4 개 위치 (36-39)는 대시, 마침표, 공백 )뿐만 아니라 시작 및 정지 문자이기 때문이다.

5 개의 가능한 위치 중 두 개의 넓은 막대는 1, 2, 4, 7, 0의 숫자 동등성을 갖는 2의 5 코드를 사용하여 1에서 10 사이의 숫자를 인코딩한다. 숫자는 합산된다. 예를 들어, 숫자 6은 2와 4 (2 + 4 = 6)의 위치를 차지하는 넓은 막대와 함께 NWWNN으로 인코딩된다. NNWWN이 4+7 = 11 경우 숫자 (+0)는 0, 문자 열 (+10 - +30)은 10으로 지정된다. (+10에서 +30) 글자를 인코딩 할 때 방정식에 "-1"이 필요하므로 표에 표시된 대로 'A'는 WNNNW → 1 + 10-1 → 10이다.

마지막 네 문자는 모든 좁은 막대와 세 개의 넓은 공백으로 구성된다. 좁은 단일 공간에는 4 가지 위치가 있다.

이 표에는 Code 39 사양이 요약되어 있다. 각 문자에 할당된 숫자 값 (시작 및 정지 제외)은 아래 설명된 체크섬(checksum) 알고리즘에서 사용된다.

Code 39 글자들 (그리고 checksum 값)| Bars | Spaces |
| --- | --- |
| || ||| | +0 | ||| || | +10 | |||| | | +20 | | |||| | +30 |
| ▮|||▮ | 1 | ▮| ||▮ | 1 | 1 | ▮|| |▮ | A | 10 | ▮||| ▮ | K | 20 | ▮ |||▮ | U | 30 |
| |▮||▮ | 2 | |▮ ||▮ | 2 | 2 | |▮| |▮ | B | 11 | |▮|| ▮ | L | 21 | | ▮||▮ | V | 31 |
| ▮▮||| | 3 | ▮▮ ||| | 3 | 3 | ▮▮| || | C | 12 | ▮▮|| | | M | 22 | ▮ ▮||| | W | 32 |
| ||▮|▮ | 4 | || ▮|▮ | 4 | 4 | ||▮ |▮ | D | 13 | ||▮| ▮ | N | 23 | | |▮|▮ | X | 33 |
| ▮|▮|| | 5 | ▮| ▮|| | 5 | 5 | ▮|▮ || | E | 14 | ▮|▮| | | O | 24 | ▮ |▮|| | Y | 34 |
| |▮▮|| | 6 | |▮ ▮|| | 6 | 6 | |▮▮ || | F | 15 | |▮▮| | | P | 25 | | ▮▮|| | Z | 35 |
| |||▮▮ | 7 | || |▮▮ | 7 | 7 | ||| ▮▮ | G | 16 | |||▮ ▮ | Q | 26 | | ||▮▮ | - | 36 |
| ▮||▮| | 8 | ▮| |▮| | 8 | 8 | ▮|| ▮| | H | 17 | ▮||▮ | | R | 27 | ▮ ||▮| |. | 37 |
| |▮|▮| | 9 | |▮ |▮| | 9 | 9 | |▮| ▮| | I | 18 | |▮|▮ | | S | 28 | | ▮|▮| | ␣ | 38 |
| ||▮▮| | 10 | || ▮▮| | 0 | 0 | ||▮ ▮| | J | 19 | ||▮▮ | | T | 29 | | |▮▮| | \* |  |
|  |
| ||||| |  | | || | | | + | 41 | | | || | | / | 40 | | | | || | $ | 39 | || | | | | % | 42 |

문자는 좁은 공간으로 구분된다. 예를 들어, 실제로 시작을 포함하고 문자를 중지 단일 문자 "A"의 전체 인코딩 "\* A \*"이며, "| |▮▮|▮|| |▮| |▮▮|" ▮ | | ▮▮ | "| |▮▮|▮|| |▮| |▮▮|" 이러한 문자 간 스페이스가 없으면 코드를 제대로 읽을 수 없다. 바코드 글꼴은 문자의 글리프 내에 항상 이 공간을 포함한다.

코드 39와 mod 43
-------------

코드 39는 선택적 모듈로 43 체크섬과 함께 사용되기도 한다. 이 기능을 사용하려면 이 기능을 바코드 인식기에서 활성화해야 한다. 체크 숫자가 있는 코드를 *코드 39 mod 43* 이라고 한다.

이를 계산하기 위해 각 문자에 하나의 값이 할당된다. 할당은 위의 표에 나열되어 있지만 거의 체계적이지는 않다.

다음은 체크섬 계산을 수행하는 방법이다.

* 시작 및 종료 코드를 제외한 바코드의 각 문자 값 (0 - 42)을 가져온다.
* 값을 합한다.
* 결과를 43으로 나눈다.
* 나머지는 추가할 체크섬 문자의 값이다.

전체 ASCII 코드 39
--------------

코드 39는 43 자로 제한된다. 전체 ASCII 코드 39 기호 0-9, AZ, ".", "-"및 공백은 코드 39의 해당 표현과 동일하다. 소문자, 추가 구두점 문자 및 제어 문자는 코드 39의 두 문자 시퀀스로 나타낸다.

|  |
| --- |
| **Code Details** |
| 숫자 | 글자 | 인코딩 |  | 숫자 | 글자 | 인코딩 |  | 숫자 | 글자 | 인코딩 |  | 숫자 | 글자 | 인코딩 |
| 0 | NUL | %U |  | 32 | [space] | [space] |  | 64 | @ | %V |  | 96 | ` | %W |
| 1 | SOH | $A |  | 33 | ! | /A |  | 65 | A | A |  | 97 | a | +A |
| 2 | STX | $B |  | 34 | "| /B |  | 66 | B | B |  | 98 | b | +B |
| 3 | ETX | $C |  | 35 | # | /C |  | 67 | C | C |  | 99 | c | +C |
| 4 | EOT | $D |  | 36 | $ | /D |  | 68 | D | D |  | 100 | d | +D |
| 5 | ENQ | $E |  | 37 | % | /E |  | 69 | E | E |  | 101 | e | +E |
| 6 | ACK | $F |  | 38 | & | /F |  | 70 | F | F |  | 102 | f | +F |
| 7 | BEL | $G |  | 39 | ' | /G |  | 71 | G | G |  | 103 | g | +G |
| 8 | BS | $H |  | 40 | ( | /H |  | 72 | H | H |  | 104 | h | +H |
| 9 | HT | $I |  | 41 | ) | /I |  | 73 | I | I |  | 105 | i | +I |
| 10 | LF | $J |  | 42 | \* | /J |  | 74 | J | J |  | 106 | j | +J |
| 11 | VT | $K |  | 43 | + | /K |  | 75 | K | K |  | 107 | k | +K |
| 12 | FF | $L |  | 44 | , | /L |  | 76 | L | L |  | 108 | l | +L |
| 13 | CR | $M |  | 45 | - | - |  | 77 | M | M |  | 109 | m | +M |
| 14 | SO | $N |  | 46 |. |. |  | 78 | N | N |  | 110 | n | +N |
| 15 | SI | $O |  | 47 | / | /O |  | 79 | O | O |  | 111 | o | +O |
| 16 | DLE | $P |  | 48 | 0 | 0 |  | 80 | P | P |  | 112 | p | +P |
| 17 | DC1 | $Q |  | 49 | 1 | 1 |  | 81 | Q | Q |  | 113 | q | +Q |
| 18 | DC2 | $R |  | 50 | 2 | 2 |  | 82 | R | R |  | 114 | r | +R |
| 19 | DC3 | $S |  | 51 | 3 | 3 |  | 83 | S | S |  | 115 | s | +S |
| 20 | DC4 | $T |  | 52 | 4 | 4 |  | 84 | T | T |  | 116 | t | +T |
| 21 | NAK | $U |  | 53 | 5 | 5 |  | 85 | U | U |  | 117 | u | +U |
| 22 | SYN | $V |  | 54 | 6 | 6 |  | 86 | V | V |  | 118 | v | +V |
| 23 | ETB | $W |  | 55 | 7 | 7 |  | 87 | W | W |  | 119 | w | +W |
| 24 | CAN | $X |  | 56 | 8 | 8 |  | 88 | X | X |  | 120 | x | +X |
| 25 | EM | $Y |  | 57 | 9 | 9 |  | 89 | Y | Y |  | 121 | y | +Y |
| 26 | SUB | $Z |  | 58 |  : | /Z |  | 90 | Z | Z |  | 122 | z | +Z |
| 27 | ESC | %A |  | 59 | ; | %F |  | 91 | [ | %K |  | 123 | { | %P |
| 28 | FS | %B |  | 60 | < | %G |  | 92 | \ | %L |  | 124 | | | %Q |
| 29 | GS | %C |  | 61 | = | %H |  | 93 | ] | %M |  | 125 | } | %R |
| 30 | RS | %D |  | 62 | > | %I |  | 94 | ^ | %N |  | 126 | ~ | %S |
| 31 | US | %E |  | 63 | ? | %J |  | 95 | \_ | %O |  | 127 | DEL | %T, %X, %Y, %Z |

참고
--

1. ↑  As one example of an international standard, see "Identification of postal items – 13-character identifier" (PDF). Universal Postal Union. 2010년 10월 28일. [깨진 링크(과거 내용 찾기)]
2. ↑  Allais, D. C. (2006). "AIDC Memoirs" (PDF). 2013년 1월 26일에 원본 문서 (PDF)에서 보존된 문서. 2019년 3월 14일에 확인함.
3. ↑  "MIL-STD-1189 Standard Department of Defense Barcode Symbology". 1989년 8월 10일. 2011년 7월 22일에 원본 문서에서 보존된 문서. 2010년 7월 22일에 확인함.
4. ↑  "Adoption Notice: AIM/BC1 Uniform Symbology Specification". 1997년 6월 19일. 2011년 9월 27일에 원본 문서에서 보존된 문서. 2011년 4월 6일에 확인함.