2013-10-09 43 views
0

讓我們首先解釋我的問題。我在這裏發佈了類似的另一個問題:PrintStream doesn't print correctly unicode characters (UTF-16),但不知何故,我沒有設法克服這個問題。使用OutputStreamWriter&希臘字符集進行套接字編程打印

我想從android打印到網絡打印機(Xerox WC 24 PCL或EPSON XP-600)。
比方說:

Socket client = new Socket(_IP, PORT);  // IP, port 

我有以下文字:

String[] str = { "-------------------------------------------------\r\n", 
       " ΠΕΛΑΤΗΣ : Γεια σου Πελάτη\r\n", 
       " ΚΩΔΙΚΟΣ : 00000234242\r\n", 
       " ΔΙΕΥΘΗΝΣΗ  : Περικλέους 77\r\n", 
       " ΤΗΛ.  : 2310-892345\r\n", 
          "-------------------------------------------------\r\n" 
      }; 

,然後我和 「ISO-8859-7」, 「Windows的1253」(希臘字母)下面的代碼中調用:

OutputStreamWriter oStream = new OutputStreamWriter(os, Charset.forName(enc).newEncoder()); 

    for(int i =0; i< str.length; i++) { 

     oStream.write(str[i]); 



     oStream.flush(); 
    } 

      oStream.close(); 

但結果到打印機(在Eclipse的控制檯就可以了)我得到garbages這樣的:

------------------------------------------------- 
    ÅéùêåÛ : èÛæÅéùêåÛ 
    èÛæÅ  : 00000234242 
    Åéùêå : ÛÅéùêåÛ 
    ñ÷æÅ  : 2310-892345 
    ------------------------------------------------- 

這是在這裏找到的擴展ASCII字符:http://www.ascii-code.com/ 任何人都可以告訴我如何告訴打印機打印我的角色的正確格式?希臘字符是「ISO-8859-7」,「Windows的1253」,「」 Cp1253" 一種阿拉伯字符的解決方案是在這裏,但它不適合我至少工作:Unicode text through socket in java

此外,沒有與成功PLC ISO 8859 7.我送的字符串,如:

"\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c2\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\r\n", 

「\ 033(12N \ r \ n」, 「農行A A A A A A自動çE E E E I I I I d N}÷ ○○○○○U U U U第y \ r \ n」,

我有沒有運氣

+1

如果你看到在控制檯預期的輸出,而不是在打印機,我首先想到的是,你需要檢查打印機文檔,設置編碼或使用不同的驅動程序 – Tim

+0

我認爲你看到的是在純ASCII字符集中解釋了「ISO-8859-7」字符......您是否在第一行看到此標誌? 'D' – ppeterka

+0

沒有,我看不出它 –

回答

0

對於PCL打印機,您可以發送PCL命令來更改符號集。如果我讀this sourcethis source正確,並且有問題的打印機支持的話,你可以把它使用ISO-8859-7符號與此設置:

oStream.write("\033(12N"); 
+0

沒有成功。我已閱讀PCL ISO 8859_7。我也發送到打印機: –

+0

看到問題 –

0

回答我的問題很簡單。我必須爲特定的打印機寫一個打印機驅動程序,以便我可以打印unicode,希臘語,japanase或任何字符。至少在我的'unicode'情況下,只有套接字沒有這種方式。