【发布时间】:2023-03-30 00:36:01
【问题描述】:
我在通过 XPrinter q260nl 打印俄语符号时遇到问题,它会打印问号。
我正在使用 OPOS 驱动程序,并且我在 C# UWP 中的代码与适用于 .NET 的框架 POS 的 Windows 10 版本是 1809。我尝试通过 Microsoft POS Tester 应用程序进行打印,该应用程序附带适用于 .NET 的 POS。
打印机通过 USB 连接。打印机打印正常,但只能打印英文字母。
ReceiptPrintJob job = claimedPrinter.Receipt.CreateJob();
job.PrintLine(“Я русский”);
await job.ExecuteAsync();
【问题讨论】:
-
我可以看到 here 您的打印机只处理 PC866 编码 (DOS),但
Я русский- 是 unicode 序列。如果您可以打印byte[]- 您可以使用如下内容:Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding("CP866"), Encoding.Unicode.GetBytes("Россия - священная наша держава")) -
@vasily.sib 但是 UWP 只接受 ANSI ASCII UTF16LE
-
是的,这就是为什么您需要将其从 "ANSI ASCII UTF16LE"(即
Encoding.Unicode)转换为 "PC866"(即是Encoding.GetEncoding("CP866")) -
@vasily.sib 因为我只能打印字符串我的代码是:job.PrintLine(Encoding.GetEncoding("CP866").GetString(Encoding.GetEncoding("CP866").GetBytes("я русский")));它给了我一个错误 System.ArgumentException: "Argument_EncodingNotSupported, cp866。有关更多信息,请访问go.microsoft.com/fwlink/?LinkId=623485"
-
你能测试一下吗:
var bytes = Encoding.GetEncoding("CP866").GetBytes("Я русский"); var str = new string(bytes.Select(b => (char)b).ToArray()); job.PrintLine(str);?