【发布时间】:2018-08-30 13:57:04
【问题描述】:
我正在制作一个使用财务打印机的应用程序,并且我发送到打印机的文档必须是西里尔文。问题是一个特定字符(一个用于关税组,因为我正在尝试打印收据)应该是(char)192,但在此过程中不知何故被更改为一些随机字符。我尝试在 Project>Properties>Resource>Text file encoding 下将项目的编码更改为 UTF-8,但没有任何改变。我还尝试将 Window>Preferences>General>Workspace>Text file encoding 中的编码更改为 UTF-8,但仍然没有。
注意:当我在其他机器上手动键入文档然后将其发送到财务打印机时,它可以正常工作(但在我的电脑上却不行)。我使用记事本编辑输出文件类型为.in 的文件。
这里是代码
if(result==JOptionPane.YES_OPTION){
try {
PrintWriter writer;
writer = new PrintWriter("PF500.in");
String line1 = " 01,0000,1";
writer.println(line1);
String etq = "#1";
String line2 = null;
String tarifa = null;
for(Artikli art : list){
switch(etq){
case "#1": etq = "$1";
break;
default: etq = "#1";
}
switch(art.tarifa){
case "0801": tarifa = Character.toString((char)192);
break;
case "0701": tarifa = Character.toString((char)193);
break;
case "0601": tarifa = Character.toString((char)194);
break;
}
line2 = etq + art.name.trim() + Character.toString((char)9) + tarifa + art.cena + "*" + art.kolicina;
writer.println(line2);
}
writer.println("%5" + Character.toString((char)9) + "P" + String.valueOf(total));
writer.println("#" + Character.toString((char)56));
writer.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
con.clearSmetka(id);
con.insertIzvestaj(list, den.date, id, user.name, time, popust);
dtm1.setRowCount(0);
smetkaTable.setModel(dtm1);
btnCloseSmetka.setEnabled(false);
btn.setBackground(new Color(0, 128, 128));
btn.setText("Маса " + String.valueOf(id));
smetkaTxt.setText("0,00");
workFrame.dispose();
}
除了关税组的字符(即 (char)192)之外,一切正常
【问题讨论】:
-
上述配置仅适用于文本编辑器如何读写文本文件。
(char)192是À,对吧?如何将字符发送到打印机? -
@howgler 是的,没错,它是À。我使用 PrintWriter,然后使用“writer.println()”,字符的行是“tarifa = Character.toString((char)192);”
-
@howlger 而且我还通过我的应用程序调用 finance32.exe 来调用打印机本身。这是制造商提供的
-
tarifa = Character.toString((char)192);可以缩短为tarifa = "\u00c0";。PrintWriter如果未在构造函数中设置,则使用默认字符编码(如果是这种情况,请改用 this constructor)。请将 Java 代码添加到您的问题中。目前尚不清楚打印机如何获得À。 -
@howlger 我添加了生成 À 的代码。我还注意到有时 Alt+192 会生成这个字符“└”。我正在使用制造商的说明,它说文档应该包含 ASCII 代码 192
标签: java eclipse encoding cyrillic fiscal