KeyGoto - 免费在线工具箱
资源库 导航库 留言板

二维码是怎么工作的?为什么扫一扫就能打开

你有没有想过一个事:

手机对着一个黑白方块"看一眼",不到半秒,网页就打开了。没有 Wi-Fi 配对,没有蓝牙连接,没有输入任何字符。

它到底是怎么做到的?

这个问题,看起来简单,但要真正讲清楚,得从 1994 年说起。

一个"被逼出来"的发明

1994 年,日本一家做汽车零件的公司——电装(Denso Wave)——遇到了一个麻烦。

他们的零件盒上要贴标签,记录批次、型号、生产日期。一开始用的是一维条码,就是超市里那种黑白条纹。

一维条码(超市那种)

只能横着扫,最多存十几个字符

二维码

任意角度可扫,能存几百到几千字符

一维条码的问题很明显:它只能存十几个字符。零件信息稍微多一点,就得贴好几张标签。

而且一维条码只能横向扫,扫歪了就读不出来。仓库工人每天要扫几千次,效率很低。

电装的一个工程师,叫原昌宏,接下了这个任务。他要设计一种新的编码方式,能存更多信息、能快速扫、还能抗磨损。

两年后,他交出了答案——二维码(QR Code,全称 Quick Response Code,"快速响应码")。

一个关键的决定
原昌宏没有给二维码申请专利保护。他希望这个技术能被所有人使用。
正是这个决定,让二维码在 20 年后,成为了全球通用的信息载体。

二维码里到底存了什么?

先回答一个最基础的问题:二维码里存的是什么?

答案是:一段文字

不是图片,不是程序,就是一段普通的文字。可能是一个网址,可能是一段话,可能是一串数字。

二维码里存的可能是什么?
https://... → 打开网页
tel:13800138000 → 拨打电话
mailto:hi@example.com → 发送邮件
WIFI:T:WPA;S:xxx;P:xxx; → 连接 Wi-Fi
这是一段普通文字 → 显示给你看

所以二维码本身没有"打开网页"的功能。它只是把网址编码成黑白方块,手机读出来之后,自己打开网页

这个区别很重要——二维码就像一个"地址标签",它不送快递,它只是告诉快递员送到哪里。

黑白方块是怎么变成文字的?

现在讲核心问题:一段文字,怎么变成黑白方块?

第一步:把文字变成 0 和 1

电脑里所有信息,本质上都是 0 和 1。文字也不例外。

A
01000001
B
01000010
1
00110001
#
00100011

比如字母 "A",在电脑里是 01000001。字母 "B" 是 01000010

网址 https://www.keygoto.com 这一串字符,在电脑里就是几百个 0 和 1。

二维码要做的第一件事,就是把这串 0 和 1 完整地记录下来。

第二步:把 0 和 1 排成方块

这是二维码最关键的设计。

它把 0 和 1 排列成一个个小方块。白色方块代表 0,黑色方块代表 1(或者反过来)。

二进制 → 黑白方块
1 0 1 1 0 1

但这些方块不是随便排的。二维码有一套精确的排列规则——哪些位置放数据、哪些位置放定位标记、哪些位置放纠错信息,都有严格规定。

三个大方块是干什么的?

你打开手机相机,对准二维码,不管从哪个角度扫,它都能读出来。为什么?

就靠那三个大方块。

二维码的三个"定位标记"
🔵 三个角上的蓝色方块 = 定位标记

这三个方块叫"位置探测图形"。它们的作用是:不管你怎么拍,手机都能通过这三个点,确定二维码的位置、大小和旋转角度。

简单说,这三个大方块就是二维码的"指南针 + 尺子"。

你竖着扫,它能认;你斜着扫,它也能认;你倒着扫,它照样能认。因为三个点一定位,二维码的方向和比例就确定了。

这就是为什么二维码比一维条码好用——一维条码只能横着扫,二维码可以从任意角度扫

二维码坏了还能扫出来?

这是二维码最"反直觉"的地方。

你找一个二维码,把中间一块涂黑,或者撕掉一角——大概率还是能扫出来。

为什么?因为二维码有纠错功能

在编码的时候,二维码会额外记录一部分"备份信息"。如果原始数据丢失了一部分,可以用备份信息还原出来。

这个纠错能力分四个等级:

L
7%
可恢复
M
15%
可恢复
Q
25%
可恢复
H
30%
可恢复

意思是:如果选 H 等级,二维码坏了 30% 以内,还能还原。

代价是:纠错等级越高,能存的信息越少,方块越密。所以:

  • 存网址 → 一般用 M 或 L 就够了
  • 印在户外广告牌上(风吹日晒)→ 用 H,坏一半也能扫
  • 名片二维码 → 用 M,兼顾容量和抗损

这个纠错机制是二维码最聪明的设计之一。它让二维码能承受各种"意外"——脏了、破了、被太阳晒褪色了,还能读出来。

为什么微信扫码比相机扫码慢?

你可能注意到一个现象:用手机自带相机扫二维码,比微信快很多。

扫描流程对比
📷 手机相机
① 识别二维码
② 读取内容
③ 执行
💬 微信扫一扫
① 识别二维码
② 读取内容
③ 安全检查(判断是否恶意链接)
④ 二次确认
⑤ 执行

微信多出来的两步,是为了保护用户——避免扫到恶意链接就直接打开。

所以慢,是有原因的。而且如果你扫的是一个网址,微信通常会先问一句"即将离开微信,打开外部浏览器"——这也是安全机制的一部分。

二维码会"用坏"吗?

有个很常见的误解:二维码扫多了会"过期"。

不会。二维码本身只是一张"打印出来的信息",扫一千次、一万次,信息都一样。

准确说:二维码不会过期,但二维码指向的内容可能会过期。

比如:

  • 你扫一个旧海报上的二维码,跳转到一个已经关停的网站——不是二维码坏了,是网站没了
  • 你扫一个活动二维码,活动结束后跳转到一个"活动已结束"的页面——二维码没坏,只是内容过期了

这也是为什么有些商家会用"动态二维码"——二维码本身不变,但背后的网址可以随时改。

所有二维码都能扫吗?

不一定。以下情况扫不出来:

❌ 扫不出来的常见情况
📷 图片太糊,对不上焦
🔍 图片太小(< 50×50 像素)
🎨 对比度不够
📐 变形严重(印在曲面上)
☀️ 反光