0

让我们先解释一下我的问题。我在这里发布了另一个类似的问题:PrintStream doesn't print correct 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", "abc à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ\r\n",

我没有运气

4

2 回答 2

0

对于 PCL 打印机,您可以发送 PCL 命令来更改符号集。如果我正确阅读了这个来源这个来源,并且有问题的打印机支持它,你可以让它使用 ISO-8859-7 符号集:

oStream.write("\033(12N");
于 2013-10-09T17:40:20.773 回答
0

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

于 2013-10-10T14:08:24.450 回答