QrCode二维码最大容量是多少?

QrCode二维码最大容量(即可容纳的字节数)为 2953 字节(约2.9KB),此数据可以从二维码官网得到。

打开二维码官网 http://www.qrcode.com/en/about/version.html,我们可以了解到:QrCode一共有40个尺寸。官方称为 Version。

  • 最低 Version 1(即尺寸 1)是21 x 21的矩阵(由21行,21列的 黑白像素 组成)
  • 最高 Version 40(即尺寸 40)是177 x 177 的矩阵(由127行,127列的 黑白像素 组成)

二维码尺寸越大存储的信息越多。那么它最多能容纳多少字符呢?根据二维码编码原理,容量最高的是version 40、容错率为"L"的尺寸。通过查阅,官方网站给出如下数据。

图中信息解释如下:

  • Data bits 表示"原始二进制位"的存储数量:23648个
  • Numeric 表示"数字"的存储数量:7089个
  • Alphanumeric 表示"字母、数字混合"的存储数量:4296个
  • Binary 表示"8位字节数据"的存储数量:2953个
  • Kanji 表示"日本汉字"(Shift JIS 编码)的存储数量:1817个

所以从上图可以得到 QrCode二维码最大容量应以"8位字节数据"存储数量为准,即 2953 字节,需要说明的是:最大容量 2953 字节是固定的,但二维码所能容纳的字符数量取决于字符的编码方式。

疑问:有些人对官网给出的数据有疑问,二维码最大容量 2953 字节,为什么容纳的 Numeric "数字"的存储数量为 7089个呢?
解答:这是因为 QrCode 默认的编码方式并不是 UTF8 或 ASCII。在 UTF8/ASCII 编码下每个数字占1个字节,而 QrCode 的数字编码方式是
    每3个数字占10位二进制。通过计算 7089 / 3 * 10 / 8 = 2953 ,与二维码最大容量 2953 字节 是吻合的。
    如果二维码使用了 UTF8 编码,则只能存储 2953 个数字。QrCode 默认的编码方式是为了更高效的存储数字。

上面得到的容量信息是以 QrCode默认字符编码形式计算出的,在实际网络应用中,为了保证字符通用性,二维码大多都会使用UTF-8编码。在UTF-8编码中,字符并不是固定的字节长度。如:一个数字/字母 = 1个字节,一个汉字 = 3个字节。以最大容量2953字节为准,得出二维码在UTF-8编码方式下的容量如下:

  • 可存储 UTF-8 字节数:2953 字节
  • 可存储 UTF-8 数字/字母数量:2953 个
  • 可存储 UTF-8 汉字数量:2953/3 = 984 个

本站的二维码生成工具使用的就是 UTF-8 编码形式,因此最多容纳 2953 个数字/字母 或 约 984 个汉字