C # ESC POS Специальные символы - PullRequest
2 голосов
/ 29 апреля 2011

Я создаю класс для печати ESC POS.

Он должен поддерживать специальные норвежские символы: ÆØÅæøå

Проблема в том, что я не могу просто использовать их в строке.

«Данные для печати: "ØÅæøå» будут напечатаны как «Данные для печати: ??????»

В соответствии с документацией эти символы печатают нужные мне специальные символы:

(символ) 91 отпечаток "Æ"

(символ) 92 отпечаток "Ø"

(символ) 93 отпечаток "Å"

(символ) 123 отпечатка"æ"

(символ) 124 отпечатка "ø"

(символ) 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 ]

3 голосов
/ 29 апреля 2011

Если это стандартная кодовая страница (например, кодовая страница 865 для северных языков ), вы можете использовать соответствующую кодировку:

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

Проверьте поддерживаемые кодировки для класса Encoding, чтобы увидеть, есть ли совпадение. Но из расположения символов 865 похоже, что вам нужно будет заменить символы самостоятельно.

Вы можете создавать сопоставления символов, используя словарь, но очевидно, что большой оператор switch / case отлично подойдет для начала (вы можете изменить его, если когда-нибудь понадобится).

0 голосов
/ 29 апреля 2011

Я не думаю, что ASCII-кодировка - это то, что вам нужно - посмотрите, что произойдет, когда вы используете UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...