c# ESC POS特殊字符
本文关键字:特殊字符 POS ESC | 更新日期: 2023-09-27 17:53:36
我正在制作ESC POS打印类。
需要支持特殊的挪威字符:ÆØÅæøå
问题是我不能只在字符串中使用它们。
"数据打印:ÆØ一æø"将打印数据打印:? ?"
根据文档,这些字符打印我需要的特殊字符:
(char)91打印"Æ"
(char)92打印"Ø"
(char)93打印"Å"
(char)123打印"æ"
(char)124打印"ø"
(char)125打印"
所以我的问题是:有没有比为每个字符做替换更好的方法?
下面是连接到打印机并发送数据的代码: Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSock.NoDelay = true;
IPAddress ip = IPAddress.Parse("192.168.0.11");
IPEndPoint remoteEP = new IPEndPoint(ip, 9100);
clientSock.Connect(remoteEP);
byte[] byData = Encoding.ASCII.GetBytes(buffer);
clientSock.Send(byData);
clientSock.Close();
解决:
Encoding nordic = Encoding.GetEncoding("IBM865");
byte[] byData = nordic.GetBytes(buffer);
如果它是一个标准代码页(如北欧语言的代码页865),您可以使用适当的编码:
Encoding nordic = Encoding.GetEncoding("IBM865");
检查Encoding
类支持的编码,看是否有匹配。但是从865的字符布局来看,看起来你需要自己替换字符。
您可以使用字典创建字符映射,但显然一个大的switch/case语句开始就可以了(如果有一天需要的话,您可以重构它)。
我不认为ASCII编码是你想要的——看看当你使用UTF-8时会发生什么。