코드 39

코드 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이  경우 숫자 (+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는 선택적 모듈로 43 체크섬과 함께 사용되기도 한다. 이 기능을 사용하려면 이 기능을 바코드 인식기에서 활성화해야 한다. 체크 숫자가 있는 코드를 ''코드 39 mod 43'' 이라고 한다.
이를 계산하기 위해 각 문자에 하나의 값이 할당된다. 할당은 위의 표에 나열되어 있지만 거의 체계적이지는 않다.
다음은 체크섬 계산을 수행하는 방법이다.
* 시작 및 종료 코드를 제외한 바코드의 각 문자 값 (0 - 42)을 가져온다.
* 값을 합한다.
* 결과를 43으로 나눈다.
* 나머지는 추가할 체크섬 문자의 값이다.
코드 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
%I
   
94
^
%N
   
126
~
%S
31
US
%E
   
63
?
%J
   
95
_
%O
   
127
DEL
%T, %X, %Y, %Z
분류:바코드