C# POS58打印机 中文乱码问题

a754992265 2017-12-11 10:03:58
求大神指导,我写了一个打印的程序,winform 的,实际运用中有三台打印机,有两台是普通小票打印机可以正常打印(中文显示正常),但是另一台是POS58 小票打印机,出来的中文全是乱码。我试了各种编码 ANSI,UTF-8,UNICODE 都不行,还是中文乱码。 这台POS58打印机打印测试页面 是正常的。求大神指教,是哪里出现了问题。现在贴上代码。

//打印
var p2 = new PrintInvoice();
p2.Open(btstr);//吧台
bool pb1 = p2.StartPrint();
foreach (string id in idlist)
{
Printeg2(dt,id, p2);
}
p2.Close();


#region 吧台打印

private void Printeg2(DataTable dt, string id, PrintInvoice p)
{
DataRow[] rows = dt.Select("id=" + id);


if (rows == null)
{
return;
}
if (rows.Length < 1)
{
return;
}



string order_no = rows[0]["order_no"].ToString();
string mobile = rows[0]["mobile"].ToString();
string eat_time = rows[0]["eat_time"].ToString();


p.SetAlignMode(eTextAlignMode.Middle);
p.SetFontSize(2);

p.PrintText("济琼美食\n");

p.SetBold(true);
p.SetFontSize(2);
p.PrintText("结账单\n");
p.PrintText(" \n");
p.SetAlignMode(eTextAlignMode.Left);
p.SetFontSize(1);
p.PrintText("单号:" + order_no + "\n");
p.PrintText("开台时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " \n");

p.SetBold(false);

p.PrintText("收款员:" + lib.pubhelper.accountname + " 客人数:1" + "\n");
p.PrintText("———————————————————————\n");
p.PrintText("菜品名 单价 数量 金额\n");
p.PrintText("———————————————————————\n");

decimal allprice=0;

foreach (DataRow row in rows)
{
decimal price=decimal.Parse(row["real_price"].ToString())*int.Parse(row["goods_nums"].ToString());
allprice += price;
p.PrintText(row["goods_name"].ToString() + " " + row["real_price"].ToString() + " " + row["goods_nums"].ToString() + " " + price.ToString("0.00") + "\n");
}
p.PrintText("———————————————————————\n");
p.PrintText("合计 " + allprice.ToString("0.00") + "\n");
p.PrintText("单号:" + order_no + "\n");

p.PrintText("用餐时间:" + eat_time + "\n");
p.PrintText("联系电话:" + mobile + "\n");
p.PrintText("———————————————————————\n");
p.SetBold(true);
p.SetFontSize(1);
p.PrintText("实收金额: " + allprice.ToString("0.00") + "\n");
p.PrintText("———————————————————————\n");
p.PrintText("微信支付:" + allprice.ToString("0.00") + "\n");
p.PrintText("———————————————————————\n");
p.PrintText("———————————————————————\n");
p.SetAlignMode(eTextAlignMode.Middle);
p.PrintText("感谢您的光临!\n");

p.PrintText(" \n");
p.PrintText(" \n");
p.PrintText(" \n");
p.PrintText(" \n");
p.PrintText(" \n");
p.Cut();


}

#endregion


打印类里面的方法如下:一部分代码

/// <summary>
/// 打印文本.在调用本函数之前必须先调用正确的 设置字体、左边距
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
public Boolean PrintText(String content)
{
if (!m_Inited)
{
return false;
}

byte[] bytes = null;
if (content.Length < 1)
{
content = " ";
}

if (content[content.Length - 1] != (char)0x0D &&
content[content.Length - 1] != (char)0x0A)
{
content = content + (char)0x0A;
}

bytes = DataFormatProcessor.StringToBytes(content);
bool bl = SendCommand(content);
return bl;
}

DataFormatProcessor 里面的字符串转到字节数组方法:

public static Byte[] StringToBytes(String asciistr)
{
Byte[] bytes;

bytes = System.Text.Encoding.Default.GetBytes(asciistr);

return bytes;
}


红色部分 我有换成UTF8不行,UNICODE
...全文
704 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
meng_xiaoxiao 2018-10-10
  • 打赏
  • 举报
回复
设置一下打印机的打印模式就可以了

选择:以图形方式打印
圣殿骑士18 2017-12-12
  • 打赏
  • 举报
回复
这种涉及到设备的问题,不在现场很难找原因。要么你不要用命令打印,改用驱动打印,先画报表再打印。
a754992265 2017-12-12
  • 打赏
  • 举报
回复
哈哈,是的,改成驱动打印就可以了。谢谢,谢谢给我的提醒。
wangmin06jb 2017-12-12
  • 打赏
  • 举报
回复
感觉和打印机的调用参数有关吧
a754992265 2017-12-11
  • 打赏
  • 举报
回复
求大神帮忙看看呀。55555555555555555 就是这该死的POS58打印机乱码,其他的都没有问题。 我用了UTF-8,UNICODE,GBK各种编码都不行 求大神帮忙看看呀。55555555555555555 就是这该死的POS58打印机乱码,其他的都没有问题。 我用了UTF-8,UNICODE,GBK各种编码都不行 求大神帮忙看看呀。55555555555555555 就是这该死的POS58打印机乱码,其他的都没有问题。 我用了UTF-8,UNICODE,GBK各种编码都不行 求大神帮忙看看呀。55555555555555555 就是这该死的POS58打印机乱码,其他的都没有问题。 我用了UTF-8,UNICODE,GBK各种编码都不行 求大神帮忙看看呀。55555555555555555 就是这该死的POS58打印机乱码,其他的都没有问题。 我用了UTF-8,UNICODE,GBK各种编码都不行 求大神帮忙看看呀。55555555555555555 就是这该死的POS58打印机乱码,其他的都没有问题。 我用了UTF-8,UNICODE,GBK各种编码都不行
a754992265 2017-12-11
  • 打赏
  • 举报
回复
求大神帮忙看看呀。55555555555555555 就是这该死的POS58打印机乱码,其他的都没有问题。 我用了UTF-8,UNICODE,GBK各种编码都不行
a754992265 2017-12-11
  • 打赏
  • 举报
回复
有大神在吗?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧