2009-12-21 3 views
6

Я пытаюсь напечатать китайские символы на Epson TM-T88IV M (параллельный порт) с помощью Microsoft Point of Service SDK на C#. Тем не менее, они отображаются как вопросительные знаки на принтере.Печать упрощенных китайских иероглифов на Epson TM-T88IVM

Мой Чековый имеет следующий действительный CharacterSetList (?): 255,437,850,852,858,860,863,865,866,936,998,999,1252

И следующий CapCharacterSet: кандзи

код страницы 1252 код страницы по умолчанию окна. 936 - это кодовая страница для упрощенного китайского языка. В этом случае я использую код 936, но никогда не мог отображать китайские символы на принтере.

Пример:

string str = "重新开始"; 
// open device as variable _ReceiptPrinter, claim it, mark it as enabled 
_ReceiptPrinter.CharacterSet = 936; 
_ReceiptPrinter.PrintNormal(PrinterStation.Receipt, str); 

Это печатает текст со всеми китайскими иероглифами заменены?.

Я не уверен, нужно ли указывать дополнительные escape-коды перед печатью (ESC R 15?), Или если мой принтер неправильно сконфигурирован в Epson OPOS (v2.50e). Я пробовал несколько вещей, но ничего не сработало. Любые идеи или примеры кода?

Примечание: в своем самотестировании принтер печатает китайские иероглифы.

+0

Что такое 'charset' в вашем примере? Кроме того, Кандзи! = Упрощенный китайский. –

+0

charset == 936 (кодовая страница для упрощенного китайца); Kanji - это значение перечисления CapCharSet. Я надеялся на юникод, но предположил, что Epson определяет его как Кандзи из-за отсутствия лучшего выбора (и я не думаю, что этот принтер поддерживает все юникоды, только конкретное подмножество для упрощенного китайского языка) \t public enum CharacterSetCapability \t { \t \t Числовой = 0, \t \t альфа = 1, \t \t кана = 10, \t \t кандзи = 11, \t \t Юникода = 997, \t \t Ascii = 998, \t \t Windows = 999, \t \t Ansi = 999, \t} –

ответ

2

Для многоязычия Epson TM-T88IV требуется, чтобы вы преобразовали строку в CodePage 936, а затем представляете эту строку в ISO-8859-1.

Смотрите этот другой вопрос подробно об алгоритме:

Can we simplify this string encoding code

сделать это перед отправкой на принтер. str = Encoding.GetEncoding («ISO-8859-1»). GetString (Encoding.GetEncoding (_ReceiptPrinter.CharacterSet) .GetBytes (str));