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);

c# ESC POS特殊字符

如果它是一个标准代码页(如北欧语言的代码页865),您可以使用适当的编码:

Encoding nordic = Encoding.GetEncoding("IBM865"); 

检查Encoding类支持的编码,看是否有匹配。但是从865的字符布局来看,看起来你需要自己替换字符。

您可以使用字典创建字符映射,但显然一个大的switch/case语句开始就可以了(如果有一天需要的话,您可以重构它)。

我不认为ASCII编码是你想要的——看看当你使用UTF-8时会发生什么。