QR码生成工具,不同意标准限制?

时间:2013-09-09 13:48:38

标签: api qr-code

问题

QR码提供的字符串有(标准)大小限制。典型限制:

  • 版本 - 1-L - 字母数字的QR码: 25个字符
  • 版本 - 1-M - 字母数字的QR码: 20个字符

并且 软件工具 将输入字符串转换为相应 QR码符号的图像 >。这些工具必须遵守标准限制......但是当你测试任何这些工具时,他们不尊重......

他们不同意ISO标准限制?还有“另一个ISO”吗?使用最大尺寸时有错误risck of non-interpretation of symbols

上下文(2013-09)和解释

在处理this problem时,我遇到了一个新问题:每个工具对字符串中的每个 QR-Code-Version 都有不同的大小限制选择。

如果所有 QR码生成器工具与“QR码标准”,ISO/IEC 18004:2006表7 ,“符号字符数和输入数据相结合”容量”;所有工具必须按照ISO标准的规定呈现符号。 例子:

  • 字符串HTTP://BIT.LY/1234567890有14 + 10 = 24个字符,因此,24 <25,字母数字模式的最大值 - L 版本 - 1 < /强>

  • 字符串HTTP://BIT.LY/12345有14 + 5 = 19个字符,因此,19 <20,字母数字模式的最大值 - M 版本 - 1 < /强>

    • googleapis / chart / qr :ok 1234但是FAILS 12345

    • api.qrserver :好的1234(好!),也好123456(仍然是版本1),但失败了{{ 3}},因为当14 + 7 = 21> 20个字符时,不会更改版本-2。

......依此类推,许多其他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 的其他链接(副本和解释):

1 个答案:

答案 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个字符。

虽然不需要优化,但这是合法的。为整个字符串选择字母数字模式也是完全有效的,但在某些情况下不会产生最短的编码。