【问题标题】:ZXing Aztec Barcode UTF-8ZXing Aztec 条码 UTF-8
【发布时间】:2020-09-18 12:28:43
【问题描述】:

我尝试使用“ä”等特殊字母创建 Aztec 条码。 我尝试激活 UTF-8,但条形码仍然只包含十六进制。 有人知道怎么回事吗?

var writer = new BarcodeWriter
{
    Format = BarcodeFormat.AZTEC,
    Options = new AztecEncodingOptions
    {
        Height = Height,
        Width = Width,
    }
};

//Hashtable hints = new Hashtable();
//writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "utf-8");

//KeyValuePair<EncodeHintType, object> valuePair = new KeyValuePair<EncodeHintType, object>(EncodeHintType.CHARACTER_SET, "UTF-8");                
//writer.Options.Hints.Add(valuePair);

writer.Options.Hints.Add(EncodeHintType.DISABLE_ECI, true);
writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");

var bitmap = writer.Write(value);
Bitmap img = new Bitmap(bitmap);

Barcode

谢谢!

【问题讨论】:

  • 那是你代码中的Encoding?不能是 System.Text.Encoding 类。
  • 哦,是的。它是一个参数。我也试过“UTF-8”……我编辑了代码……
  • Aztec 编码的默认字符集 ISO8859-1 可以表示字符 ä。你为什么尝试 UTF-8?
  • 第一次尝试没有使用 utf-8。字符 ä 未表示。
  • 我不敢相信。我用 zxing.net 的 WinForm 演示应用程序尝试了你的内容,它没有任何问题。

标签: c# utf-8 zxing


【解决方案1】:

“abcanfuiwefbieäääää”是您的输入吗? 结果位图给出“abcanfuiwefbieäääää”,这是“abcanfuiwefbieäääää”的UTF-8编码,被视为latin1。

这里发生的情况是编码器可以很好地识别和处理字符集提示,但解码器会忽略它并将其解释为 latin1。因此,要获取原始文本,您需要自己将 latin1 转换为 UTF8。

【讨论】:

  • 是的,我的内容应该是“abcanfuiwefbieäääää”。问题是我需要显示'ä'。我何时何地可以将 latin1 转换为 UTF8?
  • 您需要转换结果文本。例如。 com.google.zxing.Result result = reader.decode(...); String finalText = new String(result.getText(), "ISO-8859-1").getBytes("UTF-8");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 2020-12-09
相关资源
最近更新 更多