主办单位:中国物品编码中心 | 中国自动识别技术协会 | 《中国自动识别技术》杂志社

设为首页 | 加入收藏 | 关于我们

  二维码  正文

ISO汉信码URI模式详解

发布时间:2024年05月24日 来源:中国自动识别网 作者:王毅 董晓文 张金波

为帮助我国条码与自动识别技术产业从业人员理解ISO/IEC 20830:2021《信息技术 自动识别与数据采集技术 汉信码条码符号规范》(Information technology—Automatic identification and data capture techniques—Han Xin Code bar code symbology specification)和GB/T 21049—2022 《汉信码》标准中统一资源标识符(URI)模式的技术实现方法,解决如何应用该模式进行信息编码的问题,本文详细介绍汉信码Unicode模式的设计思路与编解码技术方案,并给出了编码实例进行解释和说明。
 
二维码URI相关应用现状与问题
伴随二维码手机应用热潮的兴起,通过手机扫描或展示二维码,实现购物、乘车等应用已经成为大众生活的主流,这些二维码中承载的内容主要是URI或URL,俗称网址。URL是URI的一种形式,用于在规定的网络协议下进行资源定位。我们通过公开收集的样本评估结果显示,我国现在使用的二维码中,超过90%承载的信息是URI。URI、URL与URN之间的关系,如图1所示。
图1  URI、URL与URN之间的关系
 
此外,这些二维码中的URI还有一个特点,是在200个字符以内的短URI,用户通过扫描二维码获取URI,通过APP定义的方式引导用户访问网络资源,二维码已经成为移动商务入口。
URI是随着互联网和万维网技术发展演进成熟起来的。目前,URI标准RFC 3986是由互联网工程方面的标准化组织IETF制定的,统一资源标识符标准实际上规定了一整套构建URI的语法结构,该标准规定了容许使用字符以及标识字符串的构成结构,由协议、主机名、域名、资源路径、系列参数、默认端口号等组成,顺序与结构固定,如图2所示。 
图2  URI语法结构示意图
 
随着二维码技术的广泛应用,由我国商品二维码引领的全球商品二维码规范应用正迅速发展,国际物品编码组织(GS1)和各国编码组织正在全面推进GS1数字链接(GS1 Digital Link)项目,该项目的核心思路是推进全球产品标识的二维码标识要全面标准化、统一化到具有规范语法结构和GS1标识编码参数的标准格式,该格式容许品牌所有者、制造商选择在GS1数字链接的URI数据字符串中包含更多的个性化标识符。由于二维码承载的是URI,后续品牌商可以在已有URI的基础上实时调整产品信息,例如发生产品召回,登陆页面可以进行更新,通过扫码就能立即收到通知。此外,该二维码可以兼容线下的设备扫描,如图3所示。
图3  GS1数字链接示意图
 
现有的二维码并没有针对URI编码进行优化,而是仅将网址视为由字母、数字及其他字符组成的字符串进行编码;绝大多数二维码只能采用效率最低的8字节编码模式,造成二维码编码空间、商品包装、网络交互等方面的极大浪费。
 
汉信码的URI模式设计与编解码方法
汉信码URI设计方法
汉信码的URI模式是针对二维码移动应用量身定制的一种信息编码模式,其基本思路是针对短网址中的常用字符组合,即常用的协议头、顶级域gTLD,以及转义机制(即%引入的转义编码),进行基于字典的高效编码,从而极大地压缩信息编码开销。
通过分析可以知道,URI规定可用的字符集共有58个,见表1。
表1
首先,根据统计信息和相关研究,选定了需要支持的协议名和域名,如“http://”“https://” “.com”“.cn”,以及GS1等相关需要支持的关键字,并将字符按照使用频率分为三个字符集,分别为URI-A、URI-B、URI-C。其中URI-A是最常用的字符组合和字符集合,包含小写字母、数字、部分协议头、常用顶级域名等62个常用字符,满足大部分URI编码需求和大部分短网址的编码需求。URI-B则涉及百分号编码、ASCII中的其他符号、GS1关键字等。在大多数情况下,URI-C可视为A和B的总集,只需查找URI-A字符集中的62个字符,并结合URI-B中的百分号编码,即可完成一个URI-C的编码或解码。
数据分析和编码算法
汉信码URI模式指示符为(1110 0010)bin,URI模式结束符为(111)bin。输入URI字符串的分析和步骤如下:
第一步,按照下述规则对输入的URI字符串进行分析,查找并记录输入URI字符串的每个字符或字符序列的初始编码。
(1)如果字符“%”后面有两个字符,并且这些“%XX”字符序列符合RFC 3986标准定义的百分号编码的要求,则对这些“%XX”字符使用百分号编码字符集。
(2)如果字符或字符序列可以使用URI-A字符集和URI-C字符集进行编码,则首选URI-A字符集。
(3)如果字符或字符序列可以使用URI-B字符集和URI-C字符集进行编码,则首选URI-B字符集。
(4)如果使用URI-A字符集在同一位置对字符或字符集序列进行编码有两种方法,则使用编码值较大的方法作为首选。
(5)如果使用URI-C字符集在同一位置对字符或字符集序列进行编码有两种方法,则使用编码值较大的方法作为首选。
第二步,对数据分析结果进行优化。
(1)如果字符串使用URI-A字符集和URI-B字符集共同进行编码,计算共计产生的编码位数和计算单独使用URI-C字符集对该字符串进行编码产生的编码位数,只有在前者小于或等于后者时,才使用URI-C字符集进行编码。
(2)如果字符串使用URI-B字符集和URI-A字符集进行编码,计算共计产生的编码位数和计算单独使用URI-C字符集对该字符串进行编码产生的编码位数,只有在前者小于或等于后者时,才使用URI-C字符集进行编码。
(3)如果字符串使用URI-A字符集和URI-C字符集进行编码,计算共计产生的编码位数和计算单独使用URI-C字符集对该字符串进行编码产生的编码位数,只有在前者小于或等于后者时,才使用URI-C字符集进行编码。
(4)如果字符串使用URI-B字符集和URI-C字符集进行编码,计算共计产生的编码位数和计算单独使用URI-C字符集对该字符串进行编码产生的编码位数,只有在前者小于或等于后者时,才使用URI-C字符集进行编码。
(5)如果字符串使用URI-C字符集和URI-A字符集进行编码,计算共计产生的编码位数和计算单独使用URI-C字符集对该字符串进行编码产生的编码位数,只有在前者小于或等于后者时,才使用URI-C字符集进行编码。
(6)如果字符串使用URI-C字符集和URI-B字符集进行编码,那么计算共计产生的编码位数和计算单独使用URI-C字符集对该字符串进行编码产生的编码位数,只有在前者小于或等于后者时,才使用URI-C字符集进行编码。
(7)重复上述步骤中描述的步骤,直到不再进行优化为止。
根据上述分析结果,按照表2中的指示符和相应的字符集对输入的URI字符串进行编码。
表2
表2中出现在字符“%”后紧跟两个字符“XX”,且“XX”满足十六进制“00”到“FF”要求,则使用百分号编码字符集对“%XX”字符序列进行编码。在百分号编码的编码过程中,在URI模式字符集指示符(100)bin之后添加一个8位计数器来编码百分比编码序列个数的长度,8位计数器之后使用8位二进制字符串进行编码每个“XX”。
 
编码实例与效果分析
以下为两个采用汉信码URI模式进行URI编码的实例。
示例1:
http://www.example.com
编码步骤如下:
(1)URI模式指示符(1110 0010)bin
(2)分析输入的URI字符串:
http://www.example.com
①根据汉信码URI设计方法,可使用URI-A字符集进行编码,URI-A模式指示符为(001)bin,见表3。
表3
 
②由于该字符串仅使用URI-A字符集编码,无需使用其他URI字符集优化。
(3)添加URI模式结束符(111)bin,最终二进制编码序列为:
(1110 0010 001 110001 11100 0 000100 010111 000000 001100 001111 001011 000100 111001 111111 111)bin
示例2:
dictionary.cambridge.org/zhs/词典/英语/soil?q=soil
以上字符串的URI编码为:
http://dictionary.cambridge.org/zhs/%E8%AF
%8D%E5%85%B8/%E8%8B%B1%E8%AF%AD/soil?q=soil
编码步骤如下:
(1)URI模式指示符(1110 0010)bin
(2)分析输入字符串:
http://dictionary.cambridge.org/zhs/%E8%AF
%8D%E5%85%B8/%E8%8B%B1%E8%AF%AD/soil?q=soil
①输入URI字符串的初步分析,根据该算法,可以使用URI-A字符集和百分号编码模式的组合对输入的URI字符串进行编码。
②字符串“http://dictionary.cambridge.org/zhs/”按照表4进行编码。
表4
③百分号编码
“%”序列“%E8%AF%8D%E5%85%B8”由百分号编码字符集(100)bin进行编码。有6个“%HH”格式的字节,设置计数范围为“06”十六进制,“ %E8%AF%8D%E5%85%B8”的二进制序列编码为:
(100 00000110 11101000 10101111 10001
101 11100101 10000101 10111000)bin
“/”用URI-A字符集编码,“/”的二进制序列编码为:
001 100101 111111
“%”序列“%E8%8B%B1%E8%AF%AD”使用返回百分号编码字符集(100)bin进行编码。有6个“%HH”格式的字节,因此将计数器设置为“06”十六进制,“%E8%8B%B1%E8%AF%AD”的二进制序列编码为:
(100 00000110 11101000 10001011 101100
01 11101000 10101111 10101101)bin
④URI的“/soil?q=soil”也可以用URI-A字符集编码,见表5。
表5
⑤如果仅使用URI-A字符集和百分号字符集对整个URI进行编码,则无需进行优化。
(3)在二进制字符串前添加指示符。
(4)添加URI模式结束符(111)bin,最终二进制编码序列为:
(1110 0010 001 110001 000011 001000 000
010 010011 001000 001110 001101 000000 010
001 011000 100100 000010 000000 001100 000
001 010001 001000 000011 000110 000100 111100 100101 011001 000111 010010 100101 111111 100 00000110 11101000 10101111 100
01101 11100101 10000101 10111000 001 1001
01 111111 100 00000110 11101000 10001011 10110001 11101000 10101111 10101101 001 100101 010010 001110 001000 001011 101011 010000 101101 010010 001110 001000 001011 111111 111)bin
 
汉信码与QR码编码效率评价与比较
针对汉信码URI模式,我们搜集了近3000个QR码编码符号实例,将相关信息作为汉信码URI模式编码进行输入,考察信息编码后的位流长度,并与汉信码URI模式进行比较,如图4所示。
图4  QR码样本与编码数据
 
其中Text编码与QR码的编码相同或相近,如图5所示,近3000样本的编码效率比较,对于相同的URI,汉信码URI模式编码效率是QR码Text模式编码效率的69.62%,相对于原版汉信码(图中为 AIM mode),其URI模式编码效率也提高了近30%。通过分析样本可以看到,对于部分样本,汉信码URI模式提升20%以上,没有达到30%,因此,目前汉信码URI模式相比于QR码,实现了20%~30%的编码效率提升。
图5  汉信码URI模式编码效率统计结果
 
用汉信码和QR码分别编码“https://www.tencent.com/zh-cn/index.html”,如图6所示。汉信码(左)的模块数为25×25个模块,QR码(右)的模块书为29×29个模块,相同模块大小的前提下,汉信码面积仅为QR码的74%。
图6  汉信码(左)与QR码(右)编码对比图
 
对于某些特殊网址,汉信码编码效率更高,编码信息序列长度仅为QR码的一半,甚至更短。这对于提高二维码识读效率、解决小包装商品的二维码印制问题、降低企业印制成本具有积极的现实意义。
 
基金项目:本文受国家市场监督管理总局科技计划项目“我国自主知识产权汉信码技术创新研究”(项目编号:2021MK184)资助。

王毅 董晓文 张金波/文

作者单位:中国物品编码中心

《中国自动识别技术》2024年第2期总第107期

延伸阅读:

声明:

    凡本网注明“来源:中国自动识别网、《中国自动识别技术》、《条码与信息系统》”的所有作品,版权均属于中国自动识别网、《中国自动识别技术》、《条码与信息系统》, 未经本网授权不得转载、摘编或利用其他方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:中国自动识别网、《中国自动识别技术》或《条码与信息系统》”。违反上述声明者,本网将追究其相关法律责任。
    凡本网注明“来源:XXX(非中国自动识别网、《中国自动识别技术》、《条码与信息系统》)”的作品,均转载自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。文章内容仅供参考。 如因作品内容、版权和其他问题需要同本网联系的,请将内容传真至010-84295675,以便本网尽快处理。

高端访谈 更多>>
商品二维码 全球商品通用...
王毅 研究员、中国物品编码中心技术部副主任兼二维码研究室主任,国际自动识别与数据采集技术分委会(ISO/IEC JTC 1/...
物品身份及其编码的本质
张成海 中国物品编码中心主任、中国ECR委员会联合主席、国际物品编码组织(GS1)管理委员会委员及顾问委员会委员、全...
推进我国二维码标准化应...
王毅,中国物品编码中心二维码研究室主任,技术部副主任,研究员,国际自动识别与数据采集技术分委会(ISO/IEC JTC1/S...
AVEVA剑维软件: 信息和智...
数据是数字化转型的关键因素,是企业的重要资产。
杂志专区 更多>>

《2024第2期》

《2024第3期》