39码是西元1974年发展出来的条码系统,是一种可供使用者双向扫瞄的分散式条码,也就是说相临两资料码之间,必须包含一个不具任何意义的空白(或细白,其逻辑值为0),且其具有支援文数字的能力,故应用较一般一维条码广泛,目前较主要利用於工业产品、商业资料及医院用的保健资料,它的最大优点是码数没有强制的限定,可用大写英文字母码,且检查码可忽略不计。
标准的39码是由起始安全空间、起始码、资料码、可忽略不计的检查码、终止安全空间及终止码所构成(徐绍文,1985),以Z135+这个资料为例,其所编成的39码如图所示:

图 39码的结构
综合来说, 39码具有以下特性:
条码的长度没有限制,可随着需求作弹性调整。但在规划长度的大小时,应考虑条码阅读机所能允许的范围,避免扫瞄时无法读取完整的资料。 起始码和终止码必须固定为“ * ”字元。允许条码扫瞄器进行双向的扫瞄处理。由於39码具有自我检查能力,故检查码可有可无,不一定要设定。 条码占用的空间较大。
可表示的资料包含有:0~9的数字,A~Z的英文字母,以及“+”、“-”、“*”、“/”、“%”、“$”、“.”等特殊符号,再加上空白字元“ ”,共计44组编码,并可组合出128个ASCII CODE的字元符号,如表所示。
表 ASCII CODE字元符号与39码对照表

39码编码方式
叁九码的每一个字元编码方式,都是藉由九条不同排列的线条编码而得。可区分成如表之四种类型:
表 39码的字元编码方式

一) 英文字母部分
26个英文字母所对应的39码逻辑值如表所示。
表 39码编码对映表(英文字母部分)
字元 |
逻辑型态 |
字元 |
逻辑型态 |
A |
110101001011 |
N |
101011010011 |
B |
101101001011 |
O |
110101101001 |
C |
110110100101 |
P |
101101101001 |
D |
101011001011 |
Q |
101010110011 |
E |
110101100101 |
R |
110101011001 |
F |
101101100101 |
S |
101101011001 |
G |
101010011011 |
T |
101011011001 |
H |
110101001101 |
U |
110010101011 |
I |
101101001101 |
V |
100110101011 |
J |
101011001101 |
W |
110011010101 |
K |
110101010011 |
X |
100101101011 |
L |
101101010011 |
Y |
110010110101 |
M |
110110101001 |
Z |
100110110101 |
(二) 数字与特殊符号部分
39码也可表示数字0~9以及特殊符号,其对应的逻辑值如表所示。
表 39码编码对映表(英文字母部分)
字元 |
逻辑型态 |
字元 |
逻辑型态 |
0 |
101001101101 |
+ |
100101001001 |
1 |
110100101011 |
- |
100101011011 |
2 |
101100101011 |
* |
100101101101 |
3 |
110110010101 |
/ |
100100101001 |
4 |
101001101011 |
% |
101001001001 |
5 |
110100110101 |
$ |
100100100101 |
6 |
101100110101 |
. |
110010101101 |
7 |
101001011011 |
空白 |
100110101101 |
8 |
110100101101 |
|
|
9 |
101100101101 |
|
|
39码检查码的计算
39码的检查码必须搭配「检查码相对值对照表」,如表 5.4所示,将查出的相对值累加後再除以43,得到的馀数再查出相对的编码字元,即为检查码字元。
例如要算出 *S123$5* 这笔资料的检查码,其计算过程如下:
步骤1 参考检查码相对值对照表,找出编码字元相对值
参考下表,得到各编码字元的相对值为:
S 的相对值为28; 1 的相对值为1;
2 的相对值为 2; 3 的相对值为3;
$ 的相对值为39 ; 5 的相对值为5。
步骤2 将各相对值累加除以43
累加相对值=28+1+2+3+39+5=78
78 ÷ 43=1….35
步骤3 查出与馀数相对的编码字元
馀数=35,
查下表,得到相对值=35 之编码字元为 Z,
故 检查码=Z,得
含检查码在内的39码,为:*S123$5Z*
表 39码的检查码查询表

|