QR码提供的字符串有(标准)大小限制。典型限制:
并且 软件工具 将输入字符串转换为相应 QR码符号的图像 >。这些工具必须遵守标准限制......但是当你测试任何这些工具时,他们不尊重......
他们不同意ISO标准限制?还有“另一个ISO”吗?使用最大尺寸时有错误或risck of non-interpretation of symbols?
在处理this problem时,我遇到了一个新问题:每个工具对字符串中的每个 QR-Code-Version 都有不同的大小限制选择。
如果所有 QR码生成器工具与“QR码标准”,ISO/IEC 18004:2006,表7 ,“符号字符数和输入数据相结合”容量”;所有工具必须按照ISO标准的规定呈现符号。 例子:
字符串HTTP://BIT.LY/1234567890
有14 + 10 = 24个字符,因此,24 <25,字母数字模式的最大值 - L 版本 - 1 < /强> 的
googleapis / chart / qr :ok 123456789但是FAILS 1234567890。
api.qrserver :ok 1234567890(好!)但是FAILS 12345678901234 - 因为有14 + 14 = 28个字符,所以,28&gt; 25。
字符串HTTP://BIT.LY/12345
有14 + 5 = 19个字符,因此,19 <20,字母数字模式的最大值 - M 版本 - 1 < /强> 的
......依此类推,许多其他QR码生成器(例如1234567失败更多!)和版本1限制。
这是一个普遍的错误?或者我的预测(关于标准合规性和QR代码生成器行为)是错误的?
PS:到目前为止,就我而言,工具中缺乏(ISO)标准合规性。
QR码生成工具:生成字符串QR码的任何在线或离线软件工具,作为输入提供字符串和一些参数(通常为版本,EPS ,字符集和图像大小)。
可编码字符集:
8位字节数据(二进制):完整集,UTF-8或ISO 8859-1字符集。 Binary 是 tools 的常用默认字符集,带有UTF8选项。
字母数字数据:一组ASCII 44个字符(数字0-9
;大写字母A-Z
;其他九个字符:(空格),
$
%
*
+
-
.
/
:
)。通常工具没有此选项,但“自动检测”行为phpqrcode,字符集被设置为字母数字。
ECL :QR码的错误更正级别。 ECL-L(低)为7%,ECL-M(中)为15%。
版本 1-L QR码符号:包含21行且低(L)ECL的符号。编码字母数字数据时,编码字符串的最大长度为25个字符。
版本 1-M QR码符号:符号为21行且中等(M)ECL。编码字母数字数据时,编码字符串的最大长度为20个字符。
ISO标准表-7 的其他链接(副本和解释):
答案 0 :(得分:3)
QR码有一个(不是过时的)ISO规范,ISO 18004:2006。您观察到的大部分内容都是缺乏合规性。但是你所缺少的规范中有一小部分也解释了方差。
首先,为什么其中一些似乎对版本和EC级别的信息编码太少?只是一个bug。
例如,谷歌图表实施已经很老了,没有维护,不推荐使用,我知道它有一些错误。这是2008年http://code.google.com/p/zxing中编码器的基础,我知道很久以前我们已经修好了这样的东西。 zxing不会在你的测试中“太早”切换到下一个版本。
那么api.qrserver
如何将太多信息转换为版本1的二维码?你忽略了你可以在一个QR码中切换模式以进一步节省字节。此生成器切换到数字模式,用于结束字符串的数字,最终保存到足以保持版本1,EC级别M,包含21个字符。
虽然不需要优化,但这是合法的。为整个字符串选择字母数字模式也是完全有效的,但在某些情况下不会产生最短的编码。