我正在为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);
答案 0 :(得分:3)
如果是标准代码页(如code page 865 for Nordic languages),您可以使用适当的编码:
Encoding nordic = Encoding.GetEncoding("IBM865");
检查Encoding
类supported encodings以查看是否匹配。但是从character layout of 865开始,您似乎需要自己替换字符。
您可以使用字典创建字符映射,但显然一个大的switch / case语句可以正常启动(如果有需要,可以重构它)。
答案 1 :(得分:0)
我认为ASCII编码不是您想要的 - 看看使用UTF-8时会发生什么。