2009-12-21 29 views
6

Tôi đang cố gắng in các ký tự Trung Quốc trên một Epson TM-T88IV M (cổng song song) bằng cách sử dụng Microsoft Point of Service SDK trong C#. Tuy nhiên, chúng xuất hiện dưới dạng dấu hỏi trên máy in.In các ký tự Trung Quốc đơn giản trên Epson TM-T88IVM

My PosPrinter có CharacterSetList hợp lệ sau (?): 255,437,850,852,858,860,863,865,866,936,998,999,1252

Và CapCharacterSet sau: Kanji

trang Mã 1252 là cửa sổ mặc định trang mã. 936 là trang mã cho tiếng Trung giản thể. Trong trường hợp này, tôi đang sử dụng trang mã 936 nhưng chưa bao giờ có thể hiển thị các ký tự Trung Quốc trên máy in.

Ví dụ:

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

này in ra văn bản với tất cả các ký tự Trung Quốc thay thế bằng?.

Tôi không chắc liệu tôi có cần chỉ định mã thoát bổ sung trước khi in (ESC R 15?) Hoặc nếu máy in của tôi bị định cấu hình sai trong Epson OPOS (v2.50e). Tôi đã thử một số thứ, nhưng không có gì có hiệu quả. Bất kỳ ý tưởng hay ví dụ mã nào?

Lưu ý: trong quá trình tự kiểm tra, máy in in các ký tự Trung Quốc.

+0

Bộ ký tự 'trong ví dụ của bạn là gì? Ngoài ra, Kanji! = Tiếng Trung giản thể. –

+0

charset == 936 (Trang mã cho tiếng Trung giản thể); Kanji là giá trị enum của CapCharSet. Tôi đã hy vọng cho unicode, nhưng cho rằng Epson định nghĩa nó như Kanji vì thiếu một lựa chọn tốt hơn (và tôi không nghĩ rằng máy in này hỗ trợ tất cả unicode, chỉ là tập hợp con cụ thể đối với Trung Quốc giản thể) \t enum công 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, 01.\t \t Windows = 999, \t \t Ansi = 999, \t} –

Trả lời

2

Đa ngôn ngữ Epson TM-T88IV yêu cầu bạn chuyển đổi chuỗi thành CodePage 936 và sau đó đại diện cho chuỗi đó trong ISO-8859-1.

Xem câu hỏi này khác để biết chi tiết về thuật toán:

Can we simplify this string encoding code

làm điều này trước khi gửi đến máy in. str = Encoding.GetEncoding ("ISO-8859-1") GetString (Encoding.GetEncoding (_ReceiptPrinter.CharacterSet) .GetBytes (str));

Các vấn đề liên quan