2009-12-21 5 views
6

Ich versuche, chinesische Zeichen auf einem Epson TM-T88IV M (paralleler Anschluss) unter Verwendung des Microsoft Point of Service SDK in C# zu drucken. Sie erscheinen jedoch als Fragezeichen auf dem Drucker.Drucken von vereinfachten chinesischen Zeichen auf Epson TM-T88IVM

Mein PosPrinter hat folgenden gültigen CharacterSetList (?): 255,437,850,852,858,860,863,865,866,936,998,999,1252

und die folgenden CapCharacterSet: Kanji

Codepage 1252 ist die Standard-Windows-Codepage. 936 ist die Codepage für vereinfachtes Chinesisch. In diesem Fall verwende ich die Codepage 936, konnte jedoch nie chinesische Zeichen auf dem Drucker anzeigen.

Beispiel:

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

Dieser druckt den Text mit allen chinesischen Schriftzeichen aus ersetzt mit?.

Ich bin mir nicht sicher, ob ich vor dem Drucken zusätzliche Escape-Codes angeben muss (ESC R 15?) Oder ob mein Drucker in Epson OPOS (v2.50e) falsch konfiguriert ist. Ich habe einige Dinge ausprobiert, aber nichts hat funktioniert. Irgendwelche Ideen oder Codebeispiele?

Hinweis: Im Selbsttest druckt der Drucker chinesische Zeichen.

+0

Was ist 'charset' in Ihrem Beispiel? Auch, Kanji! = Vereinfachtes Chinesisch. –

+0

charset == 936 (Codepage für vereinfachtes Chinesisch); Kanji ist der CapCharSet-Enumerationswert. Ich habe auf Unicode gehofft, aber angenommen, dass Epson es als Kanji aus Mangel an einer besseren Wahl definiert (und ich glaube nicht, dass dieser Drucker alle Unicode unterstützt, nur die spezifische Teilmenge für vereinfachtes Chinesisch) \t public enum CharacterSetCapability \t { \t \t Numeric = 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} –

Antwort

2

Der Epson TM-T88IV Multilingual erfordert, dass Sie die Zeichenfolge in CodePage 936 konvertieren und diese Zeichenfolge dann in ISO-8859-1 darstellen.

Sehen Sie diese andere Frage für Details auf dem Algorithmus:

Can we simplify this string encoding code

dies tun, bevor an den Drucker zu senden. str = Encoding.GetEncoding ("ISO-8859-1"). GetString (Encoding.GetEncoding (_ReceiptPrinter.CharacterSet) .GetBytes (str));