맨위로가기

코드 39

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

코드 39는 9개의 바와 스페이스로 구성되며, 3개가 굵은 바 또는 스페이스로 이루어진 바코드 기호 체계이다. 숫자, 대문자 알파벳, 기호 등을 포함하여 총 43개의 문자를 표현할 수 있으며, 풀 ASCII 코드 39를 통해 128개의 ASCII 문자 전체를 나타낼 수 있다. 체크섬을 선택적으로 사용할 수 있으며, 바코드의 시작과 끝에는 시작/정지 문자 '*'를 배치하여 스캔 오류를 방지한다. 판독이 쉽고 구현이 간단하지만, 인쇄 시 폭이 넓고 많은 자릿수를 표시하는 데는 적합하지 않다. EIAJ 라벨, AIAG 라벨, 무시킹 및 러브 앤 베리 카드 바코드 등에 활용되며, GNU 바코드, Zint, glbarcode 등 자유-오픈 소스 소프트웨어를 통해 생성할 수 있다.

더 읽어볼만한 페이지

  • 바코드 - QR 코드
    QR 코드는 1994년 일본 덴소 웨이브가 개발한 2차원 바코드로, 기존 바코드보다 많은 정보를 저장하고 오류 정정 기능이 있으며, 자동차 부품 관리에서 시작하여 다양한 분야에서 활용되지만 악성 QR 코드에 의한 피해에도 주의해야 한다.
  • 바코드 - 범용 상품 부호
    범용 상품 부호(UPC)는 소매점에서 상품을 식별하기 위해 상품 포장에 인쇄되는 널리 사용되는 바코드의 일종으로, 12자리 숫자로 구성된 UPC-A를 포함한 다양한 변형이 존재한다.
코드 39
개요
종류이산형 바코드
밀도보통
길이가변적
인쇄 대비보통
다른 이름
명칭USS 코드 39
코드 3/9
3 of 9
코드 39 확장
코드 39 풀 ASCII
특징
설명자체 검사 기능이 있는 영숫자 바코드
군사, 자동차 산업에서 사용
문자 집합숫자 0-9, 대문자 A-Z, 일부 특수 문자 (-, ., 스페이스, $, /, +, %)
체크섬모듈러스 43 (선택 사항)
표준MIL-STD-1189 (미국 국방부 표준)
AIM/BC1 (자동 식별 제조업체 협회 표준)
역사
개발1974년, 인터멕 (Intermec)에서 개발
개발자데이비드 알리스 (David Allais)와 레이 스티븐스 (Ray Stevens)

2. 규격 및 구성

코드 39는 JIS X 0503 "바코드 심볼-코드 39-기본 사양"으로 일본 산업 규격(JIS)에 규격화되어 있다.[6] 코드 39 바코드는 9개의 바(검은색 막대)와 스페이스(흰색 막대)로 구성되며, 이 중 3개가 굵은(또는 넓은) 바 또는 스페이스이다. 이 9개의 요소로 하나의 문자를 표현한다. 각 문자 사이는 좁은 바와 같은 폭의 스페이스 1개로 구분된다. 바코드의 시작과 끝에는 시작/정지 문자 '*' (별표)가 배치되어, 비스듬하게 스캔했을 때 발생하는 부분 판독을 방지한다.

코드 39 문자


표준 코드 39는 숫자(0-9), 대문자 알파벳(A-Z), 기호(-, ., 공백, $, /, +, %) 및 시작/정지 문자(*)를 포함하여 총 43개의 문자를 표현할 수 있다. 풀 아스키(Full ASCII) 코드 39는 4개의 특수 문자($ ,+, %, /)와 다른 문자의 조합을 통해 제어 문자를 포함한 모든 ASCII 문자를 표현할 수 있다. (단, 풀 아스키 코드 39를 읽기 위해서는 해당 기능을 지원하는 바코드 스캐너가 필요하다.)[6]

일반적으로 두 개의 넓은 막대의 위치는 1에서 10 사이의 숫자를 인코딩하는 것으로 간주될 수 있으며, 넓은 공간의 위치 (네 개의 가능한 위치가 있음)는 문자를 네 개의 그룹 중 하나로 분류하는 것으로 간주될 수 있다. ( 왼쪽에서 오른쪽으로) : 문자 (+30) (U-Z), 숫자 (+0) (1-9,0), 문자 (+10) (A-J) 및 문자 (+20) (K-T). 예를 들어, 문자 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 값)
BarsSpaces
|| |||+0||| ||+10|||| |+20| ||||+30
▮|||▮1▮| ||▮11▮|| |▮A10▮||| ▮K20▮ |||▮U30
|▮||▮2|▮ ||▮22|▮| |▮B11|▮|| ▮L21| ▮||▮V31
▮▮|||3▮▮ |||33▮▮| ||C12▮▮|| |M22▮ ▮|||W32
||▮|▮4|| ▮|▮44||▮ |▮D13||▮| ▮N23| |▮|▮X33
▮|▮||5▮| ▮||55▮|▮ ||E14▮|▮| |O24▮ |▮||Y34
|▮▮||6|▮ ▮||66|▮▮ ||F15|▮▮| |P25| ▮▮||Z35
|||▮▮7|| |▮▮77||| ▮▮G16|||▮ ▮Q26| ||▮▮-36
▮||▮|8▮| |▮|88▮|| ▮|H17▮||▮ |R27▮ ||▮|.37
|▮|▮|9|▮ |▮|99|▮| ▮|I18|▮|▮ |S28| ▮|▮|38
||▮▮|0|| ▮▮|00||▮ ▮|J19||▮▮ |T29| |▮▮|*
colspan="14" |
|||||| || | |+41| | || |/40| | | ||$39|| | | |%42


3. 코드 체계

코드 39는 각 문자가 5개의 바와 4개의 스페이스, 총 9개의 요소로 구성되며, 이 중 3개는 넓고 6개는 좁게 표현된다[6]는 특징이 있다. 넓은 요소는 '1', 좁은 요소는 '0'으로 나타낼 수 있다. 5개의 바 중 2개, 4개의 스페이스 중 1개가 넓다.

코드 39는 숫자, 대문자 알파벳, 그리고 일부 기호('-','.', 공백)를 포함하여 총 43개의 문자를 표현할 수 있다. 또한, '$', '+', '%', '/'와 다른 문자를 조합하여 제어 코드를 포함하는 풀 아스키(Full ASCII) 문자도 표현 가능하다(단, 해당 바코드 스캐너가 필요하다).[6]

문자 사이는 가는 바(narrow bar)와 같은 폭의 스페이스 1개로 구분된다. 바코드의 시작과 끝에는 '*' (아스테리스크) 문자가 배치되어, 비스듬한 스캔으로 인한 부분 판독을 방지한다. 체크섬은 시스템에 따라 선택적으로 추가될 수 있으며, 일반적으로 모듈로 43 방식이 사용된다.

코드 39는 바의 "흰색", "검은색", "가늘다", "굵다"의 네 가지 요소만으로 판독이 가능하여, 바의 미세한 폭까지 정밀하게 읽을 필요가 없어 단순하고 신뢰성이 높다. 이러한 특징으로 인해 다양한 분야에서 널리 사용되고 있다.

하지만 단순한 구조로 인해 인쇄 시 차지하는 폭이 넓어, 큰 자릿수를 표시하기에는 적합하지 않다. 시작/정지 문자를 위해 반드시 2개의 문자를 사용해야 한다는 점도 이러한 단점을 심화시키는 요인 중 하나이다.

3. 1. 인코딩

코드 39의 인코딩 방식은 다음과 같다.

  • '*' 문자는 코드 39의 시작 및 정지 기호를 나타내며, 실제 인코딩 가능한 문자는 아니다. 이 기호의 비대칭성은 판독기로 하여금 스캔되는 바코드의 방향을 결정하게 한다.
  • 일반적으로 두 개의 넓은 막대의 위치는 1에서 10 사이의 숫자를 인코딩하며, 넓은 공간의 위치(4개)는 문자를 4개의 그룹(문자(+30)(U-Z), 숫자(+0)(1-9,0), 문자(+10)(A-J), 문자(+20)(K-T)) 중 하나로 분류한다.
  • 예를 들어, 문자 P는 숫자 6을 나타내기 위해 막대가 정렬되고, 그룹 문자(+20)를 선택하기 위해 맨 오른쪽에 공간이 있다.
  • 숫자 "10"은 숫자 0을 인코딩하는 데 사용된다. 문자(+30) 그룹에는 6개의 문자(U-Z)만 있으므로, 나머지 4개의 위치(36-39)는 대시, 마침표, 공백, 시작/정지 문자를 나타낸다.
  • 5개의 가능한 위치 중 두 개의 넓은 막대는 투-오브-파이브 코드를 사용하여 1에서 10 사이의 숫자를 인코딩하며, 숫자 동등성은 1, 2, 4, 7, 0이고 이들을 합산한다.
  • 예를 들어, 숫자 6은 2와 4 위치를 차지하는 넓은 막대와 함께 NWWNN으로 인코딩된다.
  • 마지막 네 문자는 모두 좁은 막대와 세 개의 넓은 공백으로 구성된다. 좁은 단일 공간에는 4가지 위치가 있다.


Code 39 문자 (및 체크섬 값)[6]
막대공간
colspan=2|+0colspan=2|+10colspan=2|+20colspan=2|+30
▮▮1▮ ▮11▮ ▮A10▮ ▮K20▮ ▮U30
▮▮2▮ ▮22▮ ▮B11▮ ▮L21▮▮V31
▮▮3▮▮33▮▮C12▮▮M22▮ ▮W32
▮▮4▮▮44▮ ▮D13▮ ▮N23▮▮X33
▮▮5▮ ▮55▮▮E14▮▮O24▮ ▮Y34
▮▮6▮ ▮66▮▮F15▮▮P25▮▮Z35
▮▮7▮▮77▮▮G16▮ ▮Q26▮▮-36
▮▮8▮ ▮88▮ ▮H17▮▮R27▮ ▮.37
▮▮9▮ ▮99▮ ▮I18▮▮S28▮▮38
▮▮10▮▮00▮ ▮J19▮▮T29▮▮*
colspan=14|
$39/40+41%42



문자는 좁은 공간 하나로 구분된다. 예를 들어 단일 문자 "A"의 전체 인코딩(실제로 시작 및 종료 문자를 포함하는 "*A*")은 " ▮▮▮ ▮ ▮▮"이며, 이 문자 간 공간 없이는 코드가 제대로 읽히지 않는다. 바코드 글꼴에는 항상 문자의 글리프 내에 이 공간이 포함되어 있다.

3. 2. 풀 ASCII 코드 39

ASCII 코드 39는 표준 코드 39의 43개 문자 제한을 확장하여 128개의 ASCII 문자 전체를 표현한다. 숫자(0-9), 대문자 알파벳(A-Z), 기호(-, ., 공백)는 표준 코드 39와 동일하게 표현된다. 소문자, 추가 구두점 및 제어 문자는 코드 39의 두 문자 시퀀스로 표현된다.[6]

Code 39 글자들 (그리고 checksum 값)
BarsSpaces
|| |||+0||| ||+10|||| |+20| ||||+30
▮|||▮1▮| ||▮11▮|| |▮A10▮||| ▮K20▮ |||▮U30
|▮||▮2|▮ ||▮22|▮| |▮B11|▮|| ▮L21| ▮||▮V31
▮▮|||3▮▮ |||33▮▮| ||C12▮▮|| |M22▮ ▮|||W32
||▮|▮4|| ▮|▮44||▮ |▮D13||▮| ▮N23| |▮|▮X33
▮|▮||5▮| ▮||55▮|▮ ||E14▮|▮| |O24▮ |▮||Y34
|▮▮||6|▮ ▮||66|▮▮ ||F15|▮▮| |P25| ▮▮||Z35
|||▮▮7|| |▮▮77||| ▮▮G16|||▮ ▮Q26| ||▮▮-36
▮||▮|8▮| |▮|88▮|| ▮|H17▮||▮ |R27▮ ||▮|.37
|▮|▮|9|▮ |▮|99|▮| ▮|I18|▮|▮ |S28| ▮|▮|38
||▮▮|10|| ▮▮|00||▮ ▮|J19||▮▮ |T29| |▮▮|*
colspan="14" |
|||||| || | |+41| | || |/40| | | ||$39|| | | |%42



코드 상세 정보
No.문자인코딩No.문자인코딩No.문자인코딩No.문자인코딩
0NUL%U32[space][space]64@%V96`%W
1SOH$A33!/A65AA97a+A
2STX$B34"/B66BB98b+B
3ETX$C35#/C67CC99c+C
4EOT$D36$/D68DD100d+D
5ENQ$E37%/E69EE101e+E
6ACK$F38&/F70FF102f+F
7BEL$G39'/G71GG103g+G
8BS$H40(/H72HH104h+H
9HT$I41)/I73II105i+I
10LF$J42*/J74JJ106j+J
11VT$K43+/K75KK107k+K
12FF$L44,/L76LL108l+L
13CR$M45--77MM109m+M
14SO$N46..78NN110n+N
15SI$O47//O79OO111o+O
16DLE$P480080PP112p+P
17DC1$Q491181QQ113q+Q
18DC2$R502282RR114r+R
19DC3$S513383SS115s+S
20DC4$T524484TT116t+T
21NAK$U535585UU117u+U
22SYN$V546686VV118v+V
23ETB$W557787WW119w+W
24CAN$X568888XX120x+X
25EM$Y579989YY121y+Y
26SUB$Z58:/Z90ZZ122z+Z
27ESC%A59;%F91[%K123{%P
28FS%B60<%G92\%L124|%Q
29GS%C61=%H93]%M125}%R
30RS%D62>%I94^%N126~%S
31US%E63?%J95_%O127DEL%T, %X, %Y, %Z


4. 체크섬(Check Digit)

코드 39는 데이터 무결성을 높이기 위해 선택적으로 모듈로 43 체크섬을 사용할 수 있다. 체크섬을 사용하려면 바코드 리더(스캐너)에서 해당 기능을 활성화해야 한다. 체크섬이 있는 코드는 '코드 39 mod 43'이라고 한다. 각 문자에 할당된 숫자 값(시작 및 정지 제외)은 아래 설명된 체크섬 알고리즘에서 사용된다.

체크섬 계산 방법은 다음과 같다.


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


코드 39는 모듈로 10 또는 43 체크 숫자를 선택적으로 사용할 수도 있다. 이를 사용하려면 바코드 리더기에서 해당 기능을 활성화해야 한다. 체크 숫자가 있는 코드는 '코드 39 mod 10' 또는 '코드 39 mod 43'이라고 한다.

체크섬 계산 방법은 다음과 같다.

  • 시작 및 중지 코드를 제외한 바코드 각 문자의 값(0~42)을 가져온다.
  • 값들을 합산한다.
  • 결과를 10(Mod 10 체크 숫자) 또는 43(Mod 43 체크 숫자)으로 나눈다.
  • 나머지가 추가할 체크섬 문자의 값이다.

5. 특징

코드 39는 스캔할 때 바의 "흰색", "검은색", "좁음", "넓음"이라는 네 가지 요소만 판정하면 되므로, 바코드 리더가 바의 미묘한 폭 차이를 정밀하게 읽을 필요가 없어 판독이 쉽고 구현이 간단하다. 시작/정지 문자를 사용하여 부분 판독으로 인한 오류를 방지하여 신뢰성이 높다.[6] 단순한 구조 때문에 인쇄할 때 차지하는 폭이 넓어, 많은 자릿수를 표시하는 데는 적합하지 않다. 시작/정지 문자로 반드시 2개의 문자를 필요로 하는 것도 단점으로 작용할 수 있다.

6. 활용 예시

코드 39는 다음과 같은 다양한 분야에서 활용되고 있다.


  • 일본전자기계공업회(EIAJ)의 EIAJ 라벨
  • 미국 자동차 공업 협회(AIAG)의 AIAG 라벨
  • 무시킹 카드의 바코드
  • 러브 앤 베리 카드의 바코드

7. 소프트웨어

다음은 코드 39 바코드를 생성할 수 있는 자유-오픈 소스 소프트웨어이다.

참조

[1] 웹사이트 Identification of postal items – 13-character identifier https://www.upu.int/[...] Universal Postal Union 2017-10-17
[2] 간행물 AIDC Memoirs http://aidc100.org/f[...] 2010-06-02
[3] 웹사이트 MIL-STD-1189 Standard Department of Defense Barcode Symbology https://apps.dtic.mi[...] 1989-08-10
[4] 웹사이트 Adoption Notice: AIM/BC1 Uniform Symbology Specification http://www.dscp.dla.[...] 1997-06-19
[5] 웹사이트 GNU Barcode https://www.gnu.org/[...] GNU Project 2020-02-19
[6] 웹사이트 バーコード講座 CODE39 https://www.keyence.[...] キーエンス 2024-01-08
[7] 웹인용 Identification of postal items – 13-character identifier http://pls.upu.int/d[...] Universal Postal Union 2010-10-28
[8] 저널 AIDC Memoirs http://aidc100.org/f[...] 2019-03-14
[9] 웹인용 MIL-STD-1189 Standard Department of Defense Barcode Symbology https://assist.daps.[...] 1989-08-10
[10] 웹인용 Adoption Notice: AIM/BC1 Uniform Symbology Specification http://www.dscp.dla.[...] 1997-06-19



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com