2009-12-21 198 views
6

我試圖在C#中使用Microsoft Point of Service SDK在Epson TM-T88IV M(並行端口)上打印中文字符。但是,它們在打印機上顯示爲問題標記。在Epson TM-T88IVM上打印簡體中文字符

我PosPrinter具有以下有效CharacterSetList(?): 255,437,850,852,858,860,863,865,866,936,998,999,1252

而下面CapCharacterSet:漢字

代碼頁1252是默認的Windows代碼頁。 936是簡體中文的代碼頁。在這種情況下,我正在使用代碼頁936,但從未能夠在打印機上顯示中文字符。

例子:

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

這打印出所有的中國字符替換的文本?

我不確定在打印前是否需要指定其他轉義碼(ESC R 15?)或我的打印機在Epson OPOS(v2.50e)中配置錯誤。我嘗試了一些東西,但沒有任何工作。任何想法或代碼示例?

注意:在自檢中,打印機不打印漢字。

+0

你的例子中有什麼'charset'?另外,漢字!=簡體中文。 – 2009-12-21 19:58:07

+0

字符集== 936(代碼頁爲簡體中文); 漢字是CapCharSet枚舉值。我希望unicode,但認爲愛普生將它定義爲漢字缺乏更好的選擇(我不認爲這臺打印機支持所有的unicode,只是簡體中文的具體子集) \t public enum CharacterSetCapability \t { \t \t數值= 0, \t \t阿爾法= 1, \t \t假名= 10, \t \t漢字= 11, \t \t的Unicode = 997, \t \t的Ascii = 998, \t \t Windows = 999, \t \t Ansi = 999, \t} – 2009-12-22 00:19:01

回答

2

愛普生TM-T88IV多語言要求您將字符串轉換爲CodePage 936,然後在ISO-8859-1中表示該字符串。

對算法詳見這個其他問題:

Can we simplify this string encoding code

發送到打印機之前做到這一點。 (str)); str = Encoding.GetEncoding(「ISO-8859-1」)。GetString(Encoding.GetEncoding(_ReceiptPrinter.CharacterSet).GetBytes(str));