UTF8 em transferencia de arquivos

Procurei aqui no fórum…tem até questões parecidas, porém não achei ainda uma solução…
Se tiver alguma solução aqui no fórum que algum saiba …me passa o link?

assim… to com problema quando transfiro um arquivo de texto para outro pc…
Ele envia e recebe do outro lado certinho…só que quando tem os “benditos” acentos, cedilhas…fica tudo assim (aten??o)

Eu não sei se tenho que fazer algo na hora de enviar, configurar o socket para transferir no formato utf8 ou é na hora de receber que tem que configurar com UTF8

Os arquivos antes de enviar estão certos com acento e tudo…mas lá na outra máquina aparece sem acentos…

no meu método de recebimento eu estou recebendo assim

 byte[] buff = new byte[1024];
        
        BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(file));

        
        while (getTamanhoArquivo() > 0) {
            int len = input.read(buff);
            if (len == -1) {
                break;
            }
           
            os.write(buff, 0, len);
         
            tamanhoArquivo -= len;
        }
        os.close();

e o envio é assim

            BufferedInputStream is = new BufferedInputStream(new FileInputStream(f));
            
            
            
            byte[] buf = new byte[1024];

            while (true) {
                int len = is.read(buf);
                if (len == -1) {
                    break;
                }
                output.write(buf, 0, len);
            }

            output.flush();

Observa-se que os objetos input e output mensionados nos códigos acima, são iniciados assim

[code]output = new ObjectOutputStream(socket.getOutputStream());

        input = new ObjectInputStream(socket.getInputStream());

[/code]

ah…não sei se isso interfere… ou talvez seja esse o problema… a máquina que envia é windows e na máquina que está recebendo o arquivo é linux…
Será que tem a ver isso?

Pelo que vi no seu programa, os arquivos devem estar sendo transferidos corretamente.

Experimente pegar os mesmos arquivos, copiá-los com um pendrive ou sei lá como, e ver que o tal “problema”, que não é um problema, vai também ocorrer do mesmo jeito.

É que o console do Linux é UTF-8 e o Windows, por padrão, é Windows-1252.

Testei aqui…é estranho…
Se eu copiar o arquivo gerado no windows para um pendrive e abrir aqui no linux., ele abre certo…com acentos e tudo…

Estou achando que o problema deve ser na hora de receber o arquivo via socket…em algum momento creio que devo setar a codificação utf8…mas não entendo o porque, já que estou passando tudo em array de bytes e não strings…

TEm alguma maneira de depois que eu receber o arquivo, passar todo o seu texto para utf-8?

Vocë está, em algum momento, passando os bytes para Strings, ou então usando um FileWriter ou FileReader? Não? Então não deveria haver problemas com codificação. Experimente criar um arquivo de 256 bytes contendo os bytes de 00 até FF e transfira-o com sua rotina. Se ele chegar no outro lado com uma quantidade diferente de bytes, ou então os bytes estiverem errados, é realmente problema.

Vou botar aqui um attachment que é exatamente esse arquivo de 256 bytes.

O arquivo de 256 bytes.