你有没有想过一个事:
手机对着一个黑白方块"看一眼",不到半秒,网页就打开了。没有 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。
网址 https://www.keygoto.com 这一串字符,在电脑里就是几百个 0 和 1。
二维码要做的第一件事,就是把这串 0 和 1 完整地记录下来。
第二步:把 0 和 1 排成方块
这是二维码最关键的设计。
它把 0 和 1 排列成一个个小方块。白色方块代表 0,黑色方块代表 1(或者反过来)。
但这些方块不是随便排的。二维码有一套精确的排列规则——哪些位置放数据、哪些位置放定位标记、哪些位置放纠错信息,都有严格规定。
三个大方块是干什么的?
你打开手机相机,对准二维码,不管从哪个角度扫,它都能读出来。为什么?
就靠那三个大方块。
这三个方块叫"位置探测图形"。它们的作用是:不管你怎么拍,手机都能通过这三个点,确定二维码的位置、大小和旋转角度。
简单说,这三个大方块就是二维码的"指南针 + 尺子"。
你竖着扫,它能认;你斜着扫,它也能认;你倒着扫,它照样能认。因为三个点一定位,二维码的方向和比例就确定了。
这就是为什么二维码比一维条码好用——一维条码只能横着扫,二维码可以从任意角度扫。
二维码坏了还能扫出来?
这是二维码最"反直觉"的地方。
你找一个二维码,把中间一块涂黑,或者撕掉一角——大概率还是能扫出来。
为什么?因为二维码有纠错功能。
在编码的时候,二维码会额外记录一部分"备份信息"。如果原始数据丢失了一部分,可以用备份信息还原出来。
这个纠错能力分四个等级:
意思是:如果选 H 等级,二维码坏了 30% 以内,还能还原。
代价是:纠错等级越高,能存的信息越少,方块越密。所以:
- 存网址 → 一般用 M 或 L 就够了
- 印在户外广告牌上(风吹日晒)→ 用 H,坏一半也能扫
- 名片二维码 → 用 M,兼顾容量和抗损
这个纠错机制是二维码最聪明的设计之一。它让二维码能承受各种"意外"——脏了、破了、被太阳晒褪色了,还能读出来。
为什么微信扫码比相机扫码慢?
你可能注意到一个现象:用手机自带相机扫二维码,比微信快很多。
微信多出来的两步,是为了保护用户——避免扫到恶意链接就直接打开。
所以慢,是有原因的。而且如果你扫的是一个网址,微信通常会先问一句"即将离开微信,打开外部浏览器"——这也是安全机制的一部分。
二维码会"用坏"吗?
有个很常见的误解:二维码扫多了会"过期"。
不会。二维码本身只是一张"打印出来的信息",扫一千次、一万次,信息都一样。
比如:
- 你扫一个旧海报上的二维码,跳转到一个已经关停的网站——不是二维码坏了,是网站没了
- 你扫一个活动二维码,活动结束后跳转到一个"活动已结束"的页面——二维码没坏,只是内容过期了
这也是为什么有些商家会用"动态二维码"——二维码本身不变,但背后的网址可以随时改。
所有二维码都能扫吗?
不一定。以下情况扫不出来: