我正在用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扩展值。但是这样,打印机打印¥。
答案 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 的字节。效果很好。
我的客户端有打印机,所以我做的所有测试都在代码中。也许,一些(或所有)提议的答案也有效。
感谢大家的时间。