QR 码

一种二维条形码,最多可编码 7089 个数字字符,具备纠错功能,广泛应用于支付、物流和信息传递。

QR 码 (Quick Response Code) 是 1994 年由日本电装公司 (DENSO WAVE) 开发的二维条形码。与传统一维条形码只能横向存储数据不同,QR 码在纵横两个方向上编码信息,数据容量大幅提升。其最大容量为数字 7089 个、字母数字 4296 个、二进制数据 2953 字节、汉字/假名 1817 个字符。三个角上的定位图案使扫描器能够从任意角度快速识别,这也是"Quick Response"名称的由来。

QR 码的纠错功能是其核心优势之一。它采用 Reed-Solomon 纠错算法,提供 L (7%)、M (15%)、Q (25%)、H (30%) 四个纠错等级。即使码面部分被污损或遮挡,仍然可以正确读取数据。这一特性使得在 QR 码中央嵌入 logo 成为可能--只要遮挡面积不超过纠错容量。不过,纠错等级越高,同等面积下可编码的数据量越少,因此需要在容错性和数据容量之间权衡。在 Amazon 搜索魔术道具时扫描商品上的 QR 码,就能直观感受到纠错功能的实际效果。

QR 码的数据容量与字符编码密切相关。QR 码内部支持四种编码模式:数字模式 (每 3 位数字占 10 位)、字母数字模式 (每 2 个字符占 11 位)、字节模式 (每字节占 8 位) 和汉字模式 (每个字符占 13 位,基于 Shift_JIS)。中文字符如果使用字节模式以 UTF-8 编码,每个字符占 3 字节 (24 位),比汉字模式的 13 位效率低。因此,在生成包含中文的 QR 码时,编码方式的选择直接影响可容纳的字符数量。URL 中的百分号编码也会显著增加数据量,一个中文字符经 UTF-8 百分号编码后变为 9 个 ASCII 字符。

从字符计数的角度来看,QR 码是一个典型的"字符数决定成败"的应用场景。生成 QR 码时,输入数据的字节数直接决定了码的版本 (尺寸)--从版本 1 (21×21 模块) 到版本 40 (177×177 模块)。数据量越大,QR 码越复杂,扫描识别的难度也越高。因此,在生成 QR 码之前,精确计算输入文本的字节数至关重要。查看费洛蒙香水 (Amazon)的商品页面上就印有高密度 QR 码,可以观察版本与数据量的关系。安全方面,恶意 QR 码可能将用户引导至钓鱼网站,因此扫描前确认来源、扫描后检查 URL 域名是基本的防护措施。

分享这篇文章