2009-12-21 11 views
6

'de Basitleştirilmiş Çince karakterler yazdırma C# içindeki Microsoft Hizmet Noktası SDK'sını kullanarak bir Epson TM-T88IV M (paralel bağlantı noktası) üzerinde Çince karakterler yazdırmaya çalışıyorum. Ancak, yazıcıda soru işaretleri olarak görünürler.Epson TM-T88IVM

Benim POS Yazıcı aşağıdaki geçerli CharacterSetList sahiptir (?): 255,437,850,852,858,860,863,865,866,936,998,999,1252

Ve aşağıdaki CapCharacterSet: Kanji

Kod sayfası 1252 varsayılan pencere kod sayfası. 936, Basitleştirilmiş Çince için kod sayfasıdır. Bu durumda, 936 kod sayfasını kullanıyorum ancak yazıcıda Çince karakterleri hiç gösteremedim.

Örnek:

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

Bu değiştirilir tüm Çince karakterler ile metin yazdırır?.

Baskıdan önce ek çıkış kodları belirtmem gerekip gerekmediğinden emin değilim (ESC R 15?) Veya yazıcım Epson OPOS (v2.50e) içinde yanlış yapılandırılmışsa. Bir çok şeyi denedim ama hiçbir şey işe yaramadı. Herhangi bir fikir veya kod örneği?

Not: Kendi kendini testinde, yazıcı Çince karakterleri yazdırır.

+0

Örneğinizde 'karakter kümesi' nedir? Ayrıca, Kanji! = Basitleştirilmiş Çince. –

+0

charset == 936 (Basitleştirilmiş Çince için kod sayfası); Kanji, CapCharSet enum değeridir. Unicode için umut ediyordum ama Epson'un daha iyi bir seçim yapmadığı için Kanji olarak tanımladığını (ve bu yazıcının tüm unicode'u desteklediğini sanmıyorum, sadece basitleştirilmiş Çince için belirli alt kümeyi desteklemiyor) \t public enum KarakterSetCapability \t { \t \t Sayısal = 0, \t \t Alfa = 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} –

cevap

2

Epson TM-T88IV Çok Dilli, dizeyi CodePage 936'ya dönüştürmenizi ve ardından bu dizeyi ISO-8859-1'de temsil etmenizi gerektirir.

algoritması ilgili ayrıntılar için bu diğer soruya bakın:

Can we simplify this string encoding code

yazıcıya gönderilmeden önce bunu. str = Encoding.GetEncoding ("ISO-8859-1"). GetString (Encoding.GetEncoding (_ReceiptPrinter.CharacterSet) .GetBytes (str));