使用OutputStreamWriter和& Socket进行套接字编程希腊字符集打印

时间:2013-10-09 16:39:40

标签: java android sockets printing

让我们先解释一下我的问题。我在这里发布了另一个类似的问题:PrintStream doesn't print correctly unicode characters ( UTF-16)但不知怎的,我没有设法克服这个问题。

我想从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的控制台中还可以)我得到了类似的垃圾:

  -------------------------------------------------
   ÅéùêåÛ   : èÛæÅéùêåÛ
   èÛæÅ     : 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 bcàáååååçaééêãìíïððòôôöøùúúúr r \ r \ n”,

我没有运气

2 个答案:

答案 0 :(得分:0)

对于PCL打印机,您可以发送PCL命令来更改符号集。如果我正确阅读this sourcethis source,并且相关的打印机支持它,您可以使用ISO-8859-7符号集:

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

答案 1 :(得分:0)

我的问题的答案很简单。我必须为特定的打印机编写打印机驱动程序,以便我可以打印unicode,greek,japanase或任何字符。只有套接字没有这种方式,至少在我的'unicode'情况下。