图书EAN13转换带杠ISBN号
Sep212017
ISBN是从事图书从业人员要必须熟知的,常见的ISBN 10位/13位转换百度上很多资料了这里不再赘述。今天重点说说 EAN13转换带杠ISBN号的算法以及批处理工具。
从2007年1月1日起,各国ISBN组区管理机构将只能分配由下列部分组成的13位数字的ISBN号:
· 前缀号
· 组号
· 出版者号
· 书名号
· 校验码
网上很多文章都在介绍 ISBN转换EAN13条码 这其实很容易实现。我开发时遇到的问题是给出一个条码号转换为带”-“的ISBN
如: 9787501324149
转为 7-5013-2414-X(10位) 或 978-7-5013-2414-9(13位)
算法的主要难点在于如何确定 组号 以及 出版者号的长度 这二者确定了 就可以得出正确结果。
以前大家用的是笨方法如
建立一个数据库表 存储所有出版者前缀如 7-01 继而编码查询判断
有的人用了穷举法 判断出版者号的第一个数字用来判断出版者号长度
0开头的 2位
1开头的 3位
2开头的 3位
3开头的 3位
5开头的 4位
8开头的 5位
这些方法都有明显的缺点 不能保证isbn100%正确而且代码量大不易维护。
其实官方已经给出了isbn.xml文件,里面全面记录了全世界各国图书出版的规律 如图:
这是中国大陆的前缀978组号7,节点内容就是出版者号规则了。这个文件才是重点有了它可以支持全世界各国出版的图书条码转换了。下载地址isbn.xml
使用MARC批套客户端里面也有书号互转工具免费使用如图: