Zebra Printer C#中的扩展ASCII

时间:2018-04-04 14:03:20

标签: c# zebra-printers

我正在用C#编写程序,用Zebra ZXP 3打印自定义卡片。我正在使用Zebra SDK。当我尝试打印字母Ñ(西班牙语)时,打印机会打印一个问号。

我确信这是一个编码问题。

这是我的原始代码:

var graphics = new ZBRGraphics();

graphics.DrawText(10, 10, graphics.AsciiEncoder.GetBytes(text), 
graphics.AsciiEncoder.GetBytes(font), fontSize, fontStyle, textColor, out 
error);

当我检查“graphics.AsciiEncoder.GetBytes(text)”的值时,我在Ñ位置看到 63

63是问号ASCII码。所以我试过了:

var e = Encoding.GetEncoding("CP437");

e.GetBytes(text) //Replacing graphics.AsciiEncoder.GetBytes(text)

这样,当我检查时,Ñ被翻译为 165 。这是正确的ASCII扩展值。但是这样,打印机打印¥

1 个答案:

答案 0 :(得分:0)

Encoding.UTF8.GetBytes(text); //Generates two bytes for Ñ. In decimal, they are: 195 and 145.

Encoding.Unicode.GetBytes(text); //Generates 209 for Ñ, but it puts a zero byte after each byte with value.

我去的方法是:

var e = Encoding.GetEncoding("iso-8859-1");
e.GetBytes(text);

因为它只生成一个十进制值为 209 的字节。效果很好。

我的客户端有打印机,所以我做的所有测试都在代码中。也许,一些(或所有)提议的答案也有效。

感谢大家的时间。