二维码编码指的是把数据转换成二维码图案的过程。编码模式共有四种,即数字模式、字符数字模式、字节模式和汉字模式,系统会根据数据的种类自动选择最合适的模式。
数字模式只处理 0 到 9 的数字,用 10 个比特表示 3 位数,因此效率最高。字符数字模式处理 0 到 9、A 到 Z、空格以及 `$%*+-./:` 共 45 个字符,用 11 个比特表示 2 个字符。字节模式处理任意二进制数据 (包括以 UTF-8 编码的日语),用 8 个比特表示 1 个字节。汉字模式则用 13 个比特表示 1 个 Shift_JIS 汉字。
把 URL 存入二维码时,编码模式会随 URL 所含字符种类而变化。只有字符数字与符号的 URL 会以字符数字模式高效编码,而含有日语的 URL (经过百分号编码后) 会变成字节模式,数据量随之增加。使用短链接可以缩短 URL,于是用更小版本的二维码即可,既节省印刷面积,也提高读取精度。
二维码生成库 (qrcode.js、python-qrcode 等) 会根据输入数据自动选择最合适的编码模式。