报表控件Stimulsoft技术答疑:如何在二维码中编码数据?

发布时间 : 2023-02-02 10:16:15.570|阅读 61 次

概述:最近,我们经常发布一些如何在Stimulsoft中创建二维码的文章,本次我们就一起来谈谈 QR ñode 中的数据编码以及与之相关的问题。

相关链接:

Stimulsoft Reports是一款报告编写器,主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署,如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等,在你的应用程序中嵌入报告设计器或在线创建报告,支持从云端快速分享你的报告。

Stimulsoft Reports官方正版下载

最近,我们经常发布一些如何在Stimulsoft中创建二维码的文章:

然而,我们并没有介绍二维码的使用技术方面。今天,我们就一起来谈谈 QR ñode 中的数据编码以及与之相关的问题。
应用编码的通用算法
二维码支持多种信息记录方式。通常,模式选择算法的工作原理如下 - 分析输入数据并检查它是否可以以紧凑模式(数字、字母数字、汉字)之一写入。如果无法写入,则使用字节模式。在字节模式下,输入数据使用ECI(扩展通道解释)列表中的编码之一进行编码。该算法依次检查每个编码,并确定它是否可以用于对输入数据的所有字符进行编码。如果没有合适的,则使用通用编码“ UTF-8 ”。这样做都是为了确保条码尽可能小,因为在UTF-8中模式条形码具有最大尺寸。我们产品支持的二维码
ECI 标准编码列表:
  • “CP437”;
  • “ISO-8859-1”;
  • “ISO-8859-2”;
  • “ISO-8859-3”;
  • “ISO-8859-4”;
  • “ISO-8859-5”;
  • “ISO-8859-6”;
  • “ISO-8859-7”;
  • “ISO-8859-8”;
  • “ISO-8859-9”;
  • “ISO-8859-11”;
  • “ISO-8859-13”;
  • “ISO-8859-15”;
  • “Shift_JIS”;
  • “Windows-1250”;
  • “Windows-1251”;
  • “Windows-1252”;
  • “Windows-1256”;
  • “UTF-8”。
注意: JS版本支持的编码较少(由于有技术限制):
  • “ISO-8859-1”;
  • “Windows-1250”;
  • “Windows-1251”;
  • “Windows-1252”;
  • “Windows-1256”;
  • “UTF-8”。
编码错误问题
不同的条形码阅读器可能支持不同的编码集来解码 QR 码。例如,某些国家/地区的条形码阅读器仅支持该国家/地区最常用的某些编码。
此外,许多读取条码的移动应用程序仅支持某些编码,有些应用程序根本不支持 ECI 标准。
如今大多数扫描仪都能够处理UTF-8编码。
此列表中的一些编码是相似的。例如,ISO-8859-5和Windows-1251包含西里尔字符。因此,文本使用哪种编码仅取决于输入数据。例如,某些扫描仪不适用于ISO-8859-5编码,并要求使用Windows-1251。
解决方案
当需要指定选择开始的编码时,您可以使用静态属性 - StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding。
例如,让我们在Windows_1251设置默认编码:
StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding = Stimulsoft.Report.BarCodes.StiQRCodeECIMode.Windows_1251;
解决“条码开头多出三个字符”的问题
有时用户抱怨扫描信息的开头出现多余的字符。这其实不是什么问题,这只是条形码中编码信息的一个特征。如果输入数据使用UTF-8编码,那么许多程序(和我们的报告工具)都会在数据前加上BOM(字节顺序标记)。此标签是某些应用程序的标记,可帮助确定编码。但是,并不是所有的扫描仪都能识别 BOM 标记,所以在文本的开头就出现了三个多余的字符。
解决方案

将StiOptions.Engine.BarcodeQRCodeAllowUnicodeBOM选项设置为 false 以避免这种情况,并且不向输入数据添加 BOM 标签。

本次关于“在二维码中编码数据”的讲解就到这里了,点击查看更多Stimulsoft Reports二维码的教程。

想要了解Stimulsoft Reports 报价信息的朋友,欢迎咨询慧都官方客服

加入官方社群 740060302,欢迎相互交流


在线
客服
微信
QQ 电话
023-68661681
返回
顶部