1

我在我的网站上使用 .NET MessagingToolkit.QRCode 库已经有一段时间了,以便在顶部生成带有自定义图像的 QR 码,直到现在我对这个库完全没有任何问题。

最近,由于系统的增长,我需要编码的数据变得越来越大,并且尝试在 QR 码中编码这些数据一直在 QRCodeEncoder 类的 Encode 方法中导致内部“索引超出范围”异常。

通过测试,我注意到此方法似乎接受的最大字符数为 86,任何大于此的字符都会引发异常。更改传入字符串的编码类型无济于事。

我确实注意到我使用的库版本已经过时,但是,更新到最新版本也没有解决问题。

有没有其他人在图书馆遇到过这个问题并找到了解决方案?或者,我可以使用另一个没有此类问题的库吗?

异常详情如下:

2012-10-01 17:39:52,098 Error: System.IndexOutOfRangeException: Index was outside the bounds of the array. at MessagingToolkit.QRCode.Codec.QRCodeEncoder.divideDataBy8Bits(Int32[] data, SByte[] bits, Int32 maxDataCodewords) at MessagingToolkit.QRCode.Codec.QRCodeEncoder.calQrcode(Byte[] qrcodeData) at MessagingToolkit.QRCode.Codec.QRCodeEncoder.Encode(String content, Encoding encoding) at MessagingToolkit.QRCode.Codec.QRCodeEncoder.Encode(String content)

4

5 回答 5

2

在该库的官方页面上,有一个针对您的问题的解决方案的简短描述:http: //platform.twit88.com/news/60。我不知道这是否能解决你的问题。我会找到库的源代码并通过它进行调试以查看错误原因。

嗯...在任何地方都找不到源代码。因此,请与作者联系并询问他们。

如果这不起作用,我会将库更改为其他内容。如果您愿意,我已经成功地将QrCode.Net与 MVC 一起使用,并且有一些示例代码如何将其集成到 MVC。

于 2012-10-02T09:18:36.250 回答
2

我知道这篇文章有点旧,但我遇到了同样的问题,发现我的字符串 (") 中有一个非法字符,二维码无法识别。将其替换为常规引号( " )并且效果很好。

于 2013-03-27T16:25:29.270 回答
1

我有同样的问题

QRCodeEncoder qrCE = new QRCodeEncoder();
qrCE.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCE.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
qrCE.QRCodeVersion = 1;

picQRCode.Image = qrCE.Encode(memBarcodeDataForPrint.Text, System.Text.Encoding.UTF8);

我改变了以下行

qrCE.QRCodeVersion = 1;

qrCE.QRCodeVersion = 0;

它解决了。

于 2017-07-24T07:19:35.153 回答
0

我遇到了同样的问题。但是我发现每次调用该Encode方法时创建一个新的编码器实例解决了这个问题。

于 2015-06-11T12:10:47.017 回答
-1

同样的问题,但是当将版本更改为 0 时它可以工作。

于 2014-09-17T19:20:19.210 回答