C#ESC POS特殊字符

时间:2011-04-29 10:28:36

标签: c# printing

我正在为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);

2 个答案:

答案 0 :(得分:3)

如果是标准代码页(如code page 865 for Nordic languages),您可以使用适当的编码:

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

检查Encodingsupported encodings以查看是否匹配。但是从character layout of 865开始,您似乎需要自己替换字符。

您可以使用字典创建字符映射,但显然一个大的switch / case语句可以正常启动(如果有需要,可以重构它)。

答案 1 :(得分:0)

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