书背后那串条码怎么读:ISBN-13 的五段结构、校验位算法与 978/979 前缀

· 约 4 分钟 条形码生成

书背后那一小块黑白条纹,很多人只知道「扫一下能查到书」,但它其实是一串有严格结构的数字,每一段都有含义,最后一位还能当场手算出来验对错

搞清楚它的结构,在两个场合立刻有用:手工录书号时能自己判断有没有抄错,以及判断两本书到底是不是同一本

先纠正一个常见误解:ISBN 就是条码本身

不存在「把 ISBN 转换成条码」这回事。现行的 ISBN 是 13 位数字,它在设计上就等同于一个 EAN-13 商品条码——和超市里矿泉水瓶上那种码是同一套编码规则。

说法实际
常见误解ISBN 是书号,条码是另印上去的条码编的就是这 13 位数字
常见误解要专门的图书扫码器任何能读 EAN-13 的设备都行
常见误解扫码得联网数据库才有意义扫出来的就是书号本身,联网只是拿它去查书名

之所以图书能在 EAN-13 里占住一块地盘,是因为前缀 978 和 979 被专门划给了图书,业内管这个虚拟国家代码叫 Bookland。

五段结构:978-7-115-42802-8

以这串号为例,它被切成五段:

含义
前缀978图书前缀(Bookland)
组号7地区/语种组,7 = 中国大陆
出版者号115具体哪家出版社
书名号42802该社内部的第几种书
校验位8由前 12 位算出

有两个细节容易踩坑:

组号是变长的。 出书量越大的语言区,组号越短——0 和 1 是英语区,2 是法语,3 是德语,4 是日本,7 是中国大陆。中国大陆能拿到一位数,是因为年出版品种数量极大。港台不在这个组:台湾常见 957、986,香港常见 962、988。

出版者号也是变长的。 大社号段短,小社号段长。两段都变长,意味着你没法靠数位数把一串 ISBN 切开——中间的边界只能查号段表。

这个结论在实务上很重要:想从书号里解析出「哪家出版社」,靠自己写规则切分是行不通的。

校验位:三十秒手算

前 12 位从左到右依次配权重 1、3、1、3……乘完求和,取和的个位数 r,校验位 = (10 − r) mod 10

拿 978-7-115-42802-8 走一遍:

978711542802
权重131313131313
乘积9218211351222406

合计 112,个位是 2,10 − 2 = 8,和末位的 8 对上了。

最后那个 mod 10 别漏:r 为 0 时校验位是 0,不是 10

它能挡住什么错

  • 单个数字抄错——一定查得出来。
  • 相邻两位调换(最高频的手误)——大多数情况能查出来,但不是百分之百:差值恰好为 5 的相邻两位对调会漏网。

所以校验位过了不等于书号一定对,但校验位不过,一定错。手工录入时先过一遍这一关,能省掉大量「查不到书还以为是数据库的锅」的时间。

978 和 979 的分工

979 不是什么特殊待遇,就是 978 号段快用完了之后开的第二个池子。

  • 979-10 分给法国。
  • 979-8 大量用于自出版平台,亚马逊 KDP 的自出版书号多半长这样。

需要留神两点:

  1. 979 开头的书号没有 10 位形式。ISBN-10 时代还没有 979 这个前缀,所以它只能是 13 位。有些老系统只认 978 打头,遇到 979 报「无效书号」,那是系统没跟上。
  2. 自出版书号在公共书目库里往往查不到元数据。扫出来一串号但带不出书名作者,多半就是这类,只能手工补。

10 位老书号怎么换算

2007 年前出版的书通常只印 10 位。换算规则:

  1. 取前 9 位(丢掉最后那位校验位);
  2. 前面拼 978,凑成 12 位;
  3. 按 1、3 交替重算校验位。

新旧校验算法完全不同——ISBN-10 用的是模 11,所以它的校验位可能是 X(代表 10);13 位的校验位永远是 0–9。

藏书场景下只有一条建议:统一存 13 位。同一本书在书目里一处存 10 位、一处存 13 位,查重必漏。

条码旁边那截短码不是书号

有些书在主码右侧还印着一小段 2 位或 5 位的码,那是附加码:5 位的多用于标价(进口书常见),2 位的多用于期刊期号。

它不属于 ISBN。 有些扫码设备会把主码和附加码连成 15 位或 18 位一起返回,录入前必须截断,否则拿去查库一定落空。

判断标准只有一条:书号永远是 13 位,多出来的都不是。

回到最实际的问题:这串号能帮你判断「是不是同一本书」吗

能,但要分清两层。

ISBN 完全相同 = 同一版同一次印刷序列的同一种书。 这是硬判定,扫出来一样就是重了。

ISBN 不同,书名作者却一样 = 另一个版本。 换出版社、换译者、精装改平装、再版重排,书号都会变。这时候它是不是「重复」,取决于你自己的标准——收藏译本的人会认为不重,只想读完的人会认为重。

这是所有藏书查重方案的分水岭:只按书号判,会漏掉换版重买;只按书名判,会把你有意收的不同译本误报成重复。 两级都给出来、由人拍板,才是可用的做法。

❓ 常见问题

ISBN 和条码是两个东西吗?

不是两个东西,是同一串数字的两种写法关系:(1) 现行的 ISBN 是 13 位数字,它在设计上就等同于一个 EAN-13 商品条码;(2) 印在书背后的那些黑白竖条,编码的正是这 13 位数字,下方那行小字就是它的明文;(3) 所以任何能扫 EAN-13 的设备——超市扫码枪、手机相机、小程序扫码——读出来的结果都是同一串数字。为什么图书能单独占一段码号:EAN-13 的前缀 978 和 979 被专门划给了图书(业内叫 Bookland),相当于给全世界的书虚拟了一个「国家」。推论:(1) 你不需要「把 ISBN 转成条码」,它本来就是;(2) 扫码查书之所以可行,是因为这串数字全球唯一,任何书目数据库都能拿它当主键;(3) 反过来,一本书换了版本、换了装帧、换了出版社,ISBN 就是另一个——这一点在藏书查重时最关键。

最后那一位校验位怎么算?

把前 12 位按 1、3、1、3……交替加权求和,再用 10 减去个位数步骤:(1) 从左到右给前 12 位数字依次配权重 1、3、1、3…(第 1 位配 1,第 2 位配 3,以此类推);(2) 各位数字乘以权重后全部相加;(3) 取这个和的个位数 r;(4) 校验位 = (10 − r) mod 10——注意最后这个取模,r 为 0 时校验位是 0 而不是 10。实例:以 978-7-115-42802-8 为例,前 12 位是 9 7 8 7 1 1 5 4 2 8 0 2,加权后 9+21+8+21+1+3+5+12+2+24+0+6 = 112,个位是 2,10−2 = 8,与末位的 8 一致。它能防什么:(1) 单个数字抄错,一定能被查出来;(2) 相邻两位调换顺序(最常见的手误),大多数情况下也能查出来,但不是百分之百——差值为 5 的相邻位对调会漏网。实务价值:手工录入书号时先校验一遍,能挡掉绝大部分错号,省得后面查不到书还以为是数据库的问题。

979 开头的书是什么来路?

是 978 号段快用完之后启用的第二个图书前缀,不代表书的档次或真伪分工:(1) 978 是最早的图书前缀,绝大多数传统出版物都在这个段;(2) 979 是扩容段,在它下面又分了组:979-10 分给法国,979-8 大量用于自出版平台(亚马逊 KDP 的自出版书号多半是这个开头)。你会在什么场合遇到 979:(1) 海淘的英文自出版书;(2) 近年新申请号段的部分出版机构。要注意的:(1) ISBN-10 时代没有 979 这个概念,所以 979 开头的书号没有对应的 10 位形式,只能是 13 位;(2) 有些老系统只认 978 打头,遇到 979 会报「无效书号」,那是系统没跟上,不是书有问题;(3) 自出版书号在公共书目库里的元数据往往很稀薄,扫码查不到书名是常事,需要手工补。

为什么中国大陆的书都是 978-7 开头?

978 是图书前缀,7 是分配给中国大陆的地区组号五段结构:978(图书前缀)- 7(组号,代表中国大陆)- 115(出版者号)- 42802(书名号)- 8(校验位)。关于组号:(1) 组号长度不固定,从 1 位到 5 位都有,出书量越大的语言区,组号越短——0 和 1 是英语区,2 是法语区,3 是德语区,4 是日本,7 是中国大陆;(2) 中国大陆能拿到一位数的组号,是因为年出版品种数量极大。关于出版者号:(1) 它同样是变长的,规模大的出版社号段短,小社号段长;(2) 所以你没法用固定的位数去切分一串 ISBN,中间三段的边界只能查号段表,不能靠数位数。实务提醒:(1) 港台版书号不是 7 打头(台湾是 957、986 等,香港是 962、988 等),所以「同一本书的繁体版」在书号上和简体版毫无关系;(2) 判断一本书是不是引进版,看的是出版者号对应哪家社,不是看前缀。

条码右边那一小段短码是什么?

那是附加码(EAN-5 或 EAN-2),主码之外的补充信息,通常和定价或期号有关常见情形:(1) 5 位附加码多用于标价,进口书上常见,第一位表示币种、后四位表示金额;(2) 2 位附加码多用于期刊,标期号;(3) 国内图书更常见的做法是另印一个独立的定价码,或者干脆不印,定价直接印在封底文字里。实务要点:(1) 附加码不属于 ISBN,扫码录书时只需要主码那 13 位,扫进来的附加码要丢掉;(2) 有些扫码设备会把主码和附加码连成一串返回(18 位或 15 位),录入前要截断,否则查不到书;(3) 判断很简单——书号永远是 13 位,多出来的部分一律不是书号。

手上是老书,只有 10 位书号怎么办?

前面补 978、去掉旧校验位、重算新校验位,就得到等价的 13 位书号换算步骤:(1) 取 ISBN-10 的前 9 位(丢掉最后一位校验位);(2) 前面拼上 978,凑成 12 位;(3) 按 1、3 交替加权重新算一位校验位,接在末尾。注意:(1) 新旧校验位算法完全不同——ISBN-10 用的是模 11,所以它的校验位可能是 X(代表 10),而 13 位的校验位永远是 0 到 9 的数字;(2) 换算是单向可逆的,978 开头的 13 位可以还原回 10 位,979 开头的不行;(3) 2007 年之前出版的书通常只印 10 位,但它在数据库里对应的 13 位形式是确定的,两者指的是同一本书。藏书场景的建议统一存 13 位。同一本书在你的书目里既有 10 位又有 13 位,查重就一定会漏。

打开 条形码生成 CODE128/EAN/UPC/ITF/Code39·自定义颜色尺寸·PNG/SVG
家书馆微信小程序码

微信小程序 家书馆 · 家庭藏书管理

买书前先查一下,别再买重。扫一下书背后的条码就登记进家里的书库, 记得清放在哪一格、借给了谁,全家人共用同一个库。

📷 微信「扫一扫」左侧小程序码即可打开

👆 长按上方小程序码,识别打开「家书馆」

看看它能做什么 →

📖 同一工具的其他教程

🔗 相关阅读

全部教程 →