我正在尝试使用 IronBarcode 在 .net 中创建 QR 条码.
我正在关注他们编写二进制数据的教程,但它不适用于阿拉伯文本。它适用于英语,但对于阿拉伯语,控制台输出为“?????”。我尝试过 UTF8、UTF7,但没有任何效果。
https://ironsoftware.com/csharp/barcode/tutorials/csharp-qr-code-generator/#reading-and-writing-binary-data
我的代码是:
using IronBarCode;
var Msg = "مرحبا";
byte[] BinaryData = System.Text.Encoding.UTF8.GetBytes(Msg);
var bitmap = IronBarCode.QRCodeWriter.CreateQrCode(BinaryData,500, IronBarCode.QRCodeWriter.QrErrorCorrectionLevel.Highest).ToBitmap();
var barcodeResult = IronBarCode.BarcodeReader.ReadASingleBarcode(bitmap);
var stringResult = System.Text.Encoding.UTF8.GetString(barcodeResult.BinaryValue);
Console.WriteLine(stringResult) // outputs '?????'
请有人告诉我我缺少什么吗?
最佳答案
var Msg = "هذا لا يعمل";
byte[] BinaryData = System.Text.Encoding.UTF8.GetBytes(Msg);
var bitmap = IronBarCode.QRCodeWriter.CreateQrCode(BinaryData, 500, IronBarCode.QRCodeWriter.QrErrorCorrectionLevel.Highest).ToBitmap();
var barcodeResult = IronBarCode.BarcodeReader.ReadASingleBarcode(bitmap);
var stringResult =
System.Text.Encoding.UTF8.GetString(barcodeResult.BinaryValue);
// stringResult is "هذا لا يعمل"
您看到的问题是 Console.WriteLine 不支持 Visual Studio 中的阿拉伯字符。它打印“?????”对于所有非罗马字符。您可以通过保存到文件或在 Visual Studio 中放置调试断点并将鼠标悬停在变量上来验证正确的结果。
该视频解释了该问题,并提供了解决方法:
https://m.youtube.com/watch?v=rTqBnJ8HrSc
Console.OutputEncoding = System.Text.Encoding.Unicode;
关于时间:2019-05-09 标签:c#qr条码读取(unicode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69834623/