一、二维码是什么
二维码(QR Code)把数据编码成黑白方块矩阵,四个角中有三个「定位图案」(回字形),扫码器靠它们确定方向和角度。中间和四周是数据区与纠错区。
它支持数字、字母、字节(UTF-8)、汉字等模式,能存网址、文本、名片信息、Wi-Fi 配置等。
二、纠错等级 L / M / Q / H
| 等级 | 可恢复比例 | 适用 |
|---|---|---|
| L(低) | 约 7% | 画面干净、印刷质量好 |
| M(中) | 约 15% | 一般场景,默认 |
| Q(较高) | 约 25% | 有遮挡风险(如印在包装上) |
| H(高) | 约 30% | 中间要放 logo、易磨损场景 |
纠错能力越强,需要的冗余数据越多,同样内容生成的码更密。所以不是越高越好:
- 内容短 + 需要放 logo → 用 H。
- 内容长 + 屏幕展示 → 用 M 或 L,避免过密扫不出。
三、容量与长度
容量随版本(尺寸)变化,粗略量级:
- 数字最多约 7000 字符。
- 字母数字约 4300。
- 字节(UTF-8)约 2900 字节。
- 汉字(GBK 模式)约 1800 字。
实际使用中内容越短越好。一个 200 字符的 URL 会让码非常密,手机在光线不好时很难扫;换成短链(20 字符)后码会稀疏很多,扫码成功率高得多。
四、尺寸与静区
- 二维码四周要留空白边距(静区),至少 4 个模块宽,否则扫码器识别不到边界。
- 印刷尺寸建议不小于 2cm × 2cm,海报上按观看距离放大(1 米外看,至少 5cm)。
- 屏幕上展示时保证足够像素,别把 200px 的图放大到 800px(会糊)。
五、扫不出来的常见原因
| 现象 | 原因 |
|---|---|
| 完全扫不出 | 对比度不足(浅灰底 + 深灰码)、静区被裁掉、图片压缩过度 |
| 时好时坏 | 码过密、光线反光、屏幕亮度低 |
| 扫出来是乱码 | 内容编码不是 UTF-8,或扫码器不支持该模式 |
| 跳到错误页面 | 链接本身错了,或短链失效 |
| 中间 logo 太大 | 超过纠错能力,建议 logo 面积不超过 1/5 |
六、静态码与动态码
- 静态码:内容直接编进图案,生成后不能改,永久有效,无额外成本。
- 动态码:图案里是一个短链,跳转目标存在服务端,可以随时改目标、统计扫码次数;但依赖服务可用,服务停了码就废了。
营销场景常用动态码(要统计、要改目标);名片、Wi-Fi、固定链接用静态码更稳。
七、安全提醒
- 扫码前看清跳转域名,公共场所的二维码可能被覆盖张贴。
- 不要扫来源不明的「付款码」「登录码」。
- 自己生成码时,别把敏感信息(密码、token)直接编进去——二维码是明文可读的。
- 收到的码可以用 二维码解码 先看内容再决定是否访问。
八、生成与解码
用 二维码生成工具 可以设置内容、纠错等级、尺寸,生成后直接下载 PNG;需要批量或带 logo 时建议用专门库(Python 的 qrcode、JS 的 qrcode 包)。
内容里含中文或特殊字符时,建议先用 URL 编码 处理参数部分,避免部分扫码器解析异常。
小结
纠错等级越高码越密,内容越短越好扫;四周留静区、保证对比度与尺寸;中间放 logo 用 H 级且不超 1/5;要统计和改目标用动态码,固定内容用静态码。