Caractere especial não sai na impressão térmica

Tenho uma aplicação em java que pega um aquivo.txt, e manda para a impressora térmica. E por exemplo, a palavra “Emissão” no papel sai “Emiss(caracter estranho)o”

O que pode ser?

public void imprimeVenda() {

        // imprime arquivo 
        try {
            Scanner sc = new Scanner(new InputStreamReader(
                    new FileInputStream("C:/SIAH/ATENDIMENTOS/Dados/texto.txt"), Charset.forName("UTF-8")));
            FileOutputStream fs = new FileOutputStream(portaTermica() + ":");
            PrintStream ps = new PrintStream(fs);

            while (sc.hasNextLine()) {
                String linhas = sc.nextLine();
                ps.println(linhas);//Aqui imprime
            }
            fs.close();
        } catch (IOException ex) {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("A7 PDV");
            alert.setHeaderText("ATENÇÃO");
            alert.setContentText("ERRO AO IMPRIMIR!!!");
            alert.showAndWait();
        }
    }

Pesquisando aqui, parece que essas impressoras términas usam o enconding CP437, tente recuperar o arquivo assim:

Charset.forName("CP437")

Obrigado pela diga amigo, agora como eu passo esse comando na hora de imprimir?

Podia me dizer onde na parte do meu código coloco o Charset para receber acentos?

Apenas para um teste inicial, tente ler o arquivo usando esse charset:

Scanner sc = new Scanner(new InputStreamReader(
	new FileInputStream("C:/SIAH/ATENDIMENTOS/Dados/texto.txt"), 
	Charset.forName("CP437")
));

O resto do código deixa como está, e veja como será o resultado da impressão.

Ainda saiu do mesmo jeito da primeira foto amigo. Estou usando uma impressora Bematech 5100th.

Uma curiosidade é que quando uso o método a seguir, ele imprime os caracteres especiais e tbm com outra fonte na impressão térmica…

String path = "C:\\SIAH\\ATENDIMENTOS\\Dados\\texto.txt";
        try {
            Files.write(Paths.get(path), content.getBytes());
            File leitor = new File("C:/SIAH/ATENDIMENTOS/Dados/texto.txt");
            Desktop.getDesktop().print(leitor);
        } catch (IOException e) {
            e.printStackTrace();
        }

Mas com esse método acima, ele busca a impressora padrão, já o que eu quero utilizar usa uma porta de comunicação, ex: “COM5”