收藏
回答

为什么wx.scanCode扫码识别0开头的EAN_13码会被强制识别为UPC_A?

简单来说:微信识别EAN_13的时候如果遇到0开头的会直接省略0后返回UPC-A格式的12位结果.

在条码识别中,UPC-AEAN-13 本质上是可以互换的,但它们的“位数”定义不同。


1. 为什么 0 消失了?

从识别结果来看,EAN_13 : 0452425822666的结果 scanTypeUPC_A

  • UPC-A 码:是北美标准,长度固定为 12位
  • EAN-13 码:是国际标准(包括中国),长度固定为 13位

当你扫描一个以 0 开头的 13 位 EAN 码时,扫码引擎识别出它符合 UPC-A 标准。由于 UPC-A 只有 12 位,它会自动去掉最前面的补位符 0

2. 核心原因剖析

  • 兼容性设计:历史上,为了让北美系统兼容国际 EAN 码,所有 EAN-13 码如果以 0 开头,其后 12 位就完全等同于一个 UPC-A 码。
  • 微信扫码漏洞:微信的 wx.scanCode 接口在识别时,如果条码同时符合两种标准,有时会优先返回更具体的 UPC_A 类型,并按照该协议截断前导零。

问题就是为什么我给出的是一个13位的EAN_13国际标准码 微信的扫码接口要按照12位来返回结果?


最后一次编辑于  11小时前
回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    11小时前
    有用
    回复 1
    • Hello World
      Hello World
      11小时前
      1:没有报错 这是一个bug
      2:扫码返回的结果和条码类型不一致
      3:全网未找到任何关于此bug的
      11小时前
      回复
登录 后发表内容