Рейтинг:
1
Jochen Arndt
Используйте BinaryWriter
класс вместо класса StreamWriter
класс и написать win1252bytes
массив байтов:
byte[] unicodeBytes = Encoding.Unicode.GetBytes(printtemplate);
// EDIT: From comments, the printer support ISO-8859-15 to show the EURO symbol
//byte[] win1252bytes = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(1252), unicodeBytes);
byte[] isoBytes = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(28605), unicodeBytes);
writer = new System.IO.BinaryWriter(client.GetStream());
// The Write(Byte[]) method will write data as they are
//writer.Write(win1252bytes);
writer.Write(isoBytes);
Если вывод все еще неправильный, убедитесь, что принтер использует кодировку 1252.
Member 8235434
Спасибо за ваш ответ.
но евро не печатает. он печатает ?75 ?75 ?75. ожидаемый выход составляет €75 €75 €75
Jochen Arndt
Евро? В своем вопросе вы используете GBP.
Если фунт стерлингов работает, а евро нет, проверьте руководство вашего принтера. Действительно ли он использует Windows-1252 или ISO 8859-1? ISO 8859-1 не содержит всех символов (включая евро) из Windows-1252. Если вам нужен символ евро, ваш принтер должен поддерживать стандарт ISO-8859-15.
Видишь https://de.wikipedia.org/wiki/ISO_8859-1.
Он показывает кодовые точки вышеприведенных кодировок и объясняет различия.
EDIT: черт возьми, я разместил немецкую ссылку, а английская не объясняет различий.
Member 8235434
принтер поддерживает ISO-8859-15.. но евро не печатает. есть ли какая-то другая кодировка для получения евро??
Jochen Arndt
Затем вы должны отправить ему кодированные данные ISO-8859-15. Просто замените 1252 на 28605 (см. https://msdn.microsoft.com/en-us/library/system.text.encoding (v=vs.110). aspx для номеров кодовых страниц).
Member 8235434
не повезло. тот же вопрос.
Jochen Arndt
Вы выбрали ISO 8859-15 на принтере?
Вы должны отправить данные в кодировке, фактически выбранной (настроенной) на принтере.
Member 8235434
Я использую сетевой принтер toshiba (принтер этикеток). Нет опции для выбора в принтере..
Jochen Arndt
Я не знаю вашей модели принтера и не имею руководства.
Просто проверьте это сами:
Какая кодировка поддерживается?
Если поддерживается несколько кодировок, как их можно выбрать?
Возможные методы выбора: клавиши на принтере , конфигурационное программное обеспечение, настройки драйвера или даже отправка определенных команд. Проверьте инструкцию.
Выберите наиболее подходящую кодировку (предпочтительно Unicode, например UTF-8).
Затем отправьте данные в соответствующей кодировке.
Member 8235434
я использую портативный принтер toshiba b-ep2dl-gh40-qm-r
Jochen Arndt
Вы ожидаете, что я сейчас получу инструкцию и проверю ее для вас?
Как программист вы должны уметь это делать.
Итак, быстрый поиск показывает, что в драйвере принтера есть несколько вариантов. Вы можете выбрать шрифт штрих-кода и указать кодировку, которая по умолчанию выглядит как Windows-1252.
Тогда должна быть возможность отображения символа евро. Но у меня нет принтера, и я не могу его проверить.
Member 8235434
Спасибо за ваш ответ :)