Java ESC/POS原始打印-á-é-&#x-ó-ú-ü-ñ¿¡;在当地(意大利)工作,但不在西班牙工作

Java ESC/POS原始打印-á-é-&#x-ó-ú-ü-ñ¿¡;在当地(意大利)工作,但不在西班牙工作,java,character-encoding,epson,escpos,Java,Character Encoding,Epson,Escpos,我从web服务收到一个字符串,我想在ESC/POS打印机上打印它。我试过这个: private void print() { PrintService ps = getPrinter(deviceSystemName); byte[] commandByteArray = decodeReceiptCommandString(); DocFlavor df = DocFlavor.INPUT_STREAM.AUTOSENSE; ByteArrayInputStre

我从web服务收到一个字符串,我想在ESC/POS打印机上打印它。我试过这个:

private void print()
{
    PrintService ps = getPrinter(deviceSystemName);
    byte[] commandByteArray = decodeReceiptCommandString();
    DocFlavor df = DocFlavor.INPUT_STREAM.AUTOSENSE;
    ByteArrayInputStream pis = new ByteArrayInputStream(commandByteArray);

    Doc d = new SimpleDoc(pis, df, null);
    if (ps != null) {
        DocPrintJob job = ps.createPrintJob();
        job.print(d, null); 
    }
}

private byte[] decodeReceiptCommandString()
{
    String encoding = "Cp850";
    String commandString = new String(this.receipt.getString("stringa"));
    return commandString.getBytes(encoding);
}
这在意大利的系统中运行得很好,但当我在客户的西班牙打印机上打印时,结果不一样

我的工作打印:

在客户的打印机上打印:

我的打印机的协议和字符集与我的客户打印机相同


出了什么问题,我如何修复它?

这个.receipt.getString(“stringa”)是什么?,它是如何初始化的,它来自哪里?如果它已经是一个字符串,那么对它使用
new String()
是没有意义的。如果它来自某个配置文件,请确保使用正确的编码读取该文件。this.receive是一个JSONObject,我必须使用.getString(key)获取内容,key是receipt JSONObject receive structure={id:int,stringa:String}的属性;那么,在打印之前,您是否检查过该字符串是否已损坏?我猜问题可能在其他地方……您是否确保打印机设置为与发送到打印机的数据相同的代码页?要设置代码页850,请将ESC t 0x02发送到打印机。您使用的打印机(品牌、型号)是什么?此.receipt.getString(“stringa”)是什么?它是如何初始化的?它来自何处?如果它已经是一个字符串,那么对它使用
new String()
是没有意义的。如果它来自某个配置文件,请确保使用正确的编码读取该文件。this.receive是一个JSONObject,我必须使用.getString(key)获取内容,key是receipt JSONObject receive structure={id:int,stringa:String}的属性;那么,在打印之前,您是否检查过该字符串是否已损坏?我猜问题可能在其他地方……您是否确保打印机设置为与发送到打印机的数据相同的代码页?要设置代码页850,请将ESC t 0x02发送到打印机。您使用的是哪种打印机(品牌、型号)?