二维码为什么不会重复:底层原理与边界
二维码为什么不会重复,核心是它承载的字符串信息拥有极大的编码空间,在常规商用、个人扫码场景下,系统会分配独立字符串给每一张二维码,字符串不同,生成的二维码图案就不同,这套机制可以支撑海量独立标识;但它不是图案天生唯一,同一个字符串一定会生成一模一样的二维码,当两套独立系统使用相同内容生成二维码时,就会出现重复图案,这个边界在跨平台物料复用、离线自建码库场景里容易碰到,你核验二维码唯一性时,优先核对背后链接或文本内容,而不是直接对比黑白方块图案。
二维码为什么不会重复:编码容量逻辑
二维码属于QR码,遵循ISO/IEC18004标准,版本1到版本40对应不同存储上限,最高版本可存放约4296个英文字符、2953个数字或者1817个汉字。每一串输入文本都会按照固定编码规则,转化成黑白模块排布,内容是输入源头,图案只是可视化呈现形式。字符组合的理论总量极高,平台随机生成的短链接、唯一流水号、订单编号,发生随机碰撞的概率很低,这也是绝大多数扫码系统里二维码很少重复的基础原因。
碰撞概率低,不等于不存在。
平台分配标识时,大多会采用自增ID、UUID这类算法,UUID标准版本4有122位随机位,组合规模足以支撑互联网主流业务长期使用,服务商还会搭配数据库查重,新生成的标识入库前先检索,已经存在就放弃当前结果重新生成,进一步降低重复出现的可能性。单纯依靠随机算法不做数据库校验,随着生成数量持续上涨,出现重复的概率会缓慢上升。
二维码为什么不会重复:系统管控规则
我们日常见到的活码、平台收款码、商品溯源码,都不是你本地输入文字直接生成的静态码。服务商后台维护一套独立的id池,每一次创建二维码,后台先调取一条没有被占用的标识,再把标识写入二维码,扫码后跳转的地址由后台映射控制。哪怕你肉眼看到二维码样式相近,底层映射id不同,扫码之后返回的内容就不一样,很多人会误以为是二维码图案本身自带防重复能力,实际管控点在后台id分配。
静态二维码没有后台校验机制,你在任意二维码生成工具输入相同文字、相同纠错等级、相同版本参数,输出的二维码图案完全一致。如果你把同一个网址复制到两个不同的在线生成器,得到两张一模一样的静态二维码,这就是典型的重复案例,这类情况不受平台查重体系保护,适合一次性展示、不用于唯一身份识别的场景,不适合做一物一码溯源、收款核验这类需要唯一标识的用途。
| 二维码类型 | 是否自带查重 | 重复触发条件 | 推荐用途 |
|---|---|---|---|
| 平台活码 | 是,后台库查重 | 后台分配id冲突,概率较低 | 一物一码、收款、溯源 |
| 本地静态码 | 否 | 输入内容、参数完全一致 | 网址分享、海报引导 |
你判断一张二维码能不能保证唯一,可以直接看它的生成方式。如果是平台后台创建、支持后台修改扫码跳转内容,就是活码,唯一性由平台id池维护;如果只是本地工具输入文字一键导出,就是静态码,唯一性完全由输入文本决定,没有任何防重复保障。做溯源或者防伪业务,尽量选择支持入库查重的服务商,不要批量自制静态二维码,避免出现一物多码或者多物同码的问题。
纠错等级不会改变二维码的唯一性,纠错等级只控制二维码破损后可恢复扫码的容错能力,同样一段文本,切换纠错等级,图案会发生变化,但它属于人为修改参数带来的图案差异,不是系统自动生成不同唯一标识。
想要规避重复风险,你在自建码库时,优先选用带数据库查重的自增编号方案,不要只依赖纯随机字符串生成二维码。
