让我们先解释一下我的问题。我在这里发布了另一个类似的问题: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”,
我没有运气
答案 0 :(得分:0)
对于PCL打印机,您可以发送PCL命令来更改符号集。如果我正确阅读this source和this source,并且相关的打印机支持它,您可以使用ISO-8859-7符号集:
oStream.write("\033(12N");
答案 1 :(得分:0)
我的问题的答案很简单。我必须为特定的打印机编写打印机驱动程序,以便我可以打印unicode,greek,japanase或任何字符。只有套接字没有这种方式,至少在我的'unicode'情况下。