2009-12-21 16 views
6

Sto tentando di stampare caratteri cinesi su un Epson TM-T88IV M (porta parallela) utilizzando l'SDK Microsoft Point of Service in C#. Tuttavia, appaiono come punti interrogativi sulla stampante.Stampa di caratteri cinesi semplificati su Epson TM-T88IVM

mio POSPrinter ha la seguente CharacterSetList valido (?): 255,437,850,852,858,860,863,865,866,936,998,999,1252

E la seguente CapCharacterSet: Kanji

pagina codice 1252 è la pagina di codice di Windows di default. 936 è la tabella codici per il cinese semplificato. In questo caso, sto utilizzando la codepage 936 ma non sono mai stato in grado di visualizzare caratteri cinesi sulla stampante.

Esempio:

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

Questo stampa il testo con tutti i caratteri cinesi sostituiti con?.

Non sono sicuro di dover specificare ulteriori codici di escape prima di stampare (ESC R 15?) O se la mia stampante non è stata configurata correttamente in Epson OPOS (v2.50e). Ho provato un certo numero di cose, ma niente ha funzionato. Qualche idea o esempio di codice?

Nota: durante il test automatico, la stampante stampa caratteri cinesi.

+0

Cosa significa 'charset' nell'esempio? Inoltre, Kanji! = Cinese semplificato. –

+0

set di caratteri == 936 (pagina codici per il cinese semplificato); Kanji è il valore enum di CapCharSet. Speravo in unicode, ma supponevo che Epson lo definisse come Kanji per mancanza di una scelta migliore (e non credo che questa stampante supporti tutto l'unicode, solo il sottoinsieme specifico per il cinese semplificato) \t enum pubblico CharacterSetCapability \t { \t \t numerico = 0, \t \t Alpha = 1, \t \t Kana = 10, \t \t Kanji = 11, \t \t Unicode = 997, \t \t Ascii = 998, \t \t Windows = 999, \t \t Ansi = 999, \t} –

risposta

2

Epson TM-T88IV Multilingual richiede la conversione della stringa in CodePage 936 e la relativa stringa in ISO-8859-1.

Vai a questa altra questione per i dettagli su l'algoritmo:

Can we simplify this string encoding code

fare questo prima di inviare alla stampante. str = Encoding.GetEncoding ("ISO-8859-1"). GetString (Encoding.GetEncoding (_ReceiptPrinter.CharacterSet) .GetBytes (str));