Estou tendo problemas com encoding de Strings em uma aplicação cliente-servidor via socket. A comunicação ocorre normalmente porém, quando rodo o cliente em Windows e o servidor em Linux (ou vice-versa), ocorre erro na codificação. O servidor (Linux) usa UTF8, e quando utilizo windows no cliente aparecem interrogações (?) no lugar de caracteres especiais (como c cedilha e letras com til e acento circunflexo).
Eu já tentei converter explicitamente os bytes das Strings recebidas e as enviadas, mas nada deu certo até então.
Você pode passar um parâmetro ao iniciar o programa Java em Windows ou Linux para usar explicitamente um determinado encoding. Acho que é algo como “-Duser.encoding=WIN-1252” ou “-Duser.encoding=UTF-8”. Por favor, procurem direitinho essa variável.
rafaelSaqueli
Bom,
Tentei dessa maneira, porém ainda não deu certo. Pode ser que eu fiz errado. Eu rodei o programa com codificacao UTF-8 em ambos os lados(servidor linux e cliente windows).
Mas os erros de codificacao ainda persistem.
Existe outra forma de resolver?
Obrigado.
rafaelSaqueli
Estou tentando assim mais também não está dando certo.
BufferedReader entrada = new BufferedReader(new InputStreamReader(conexao.getInputStream(), “UTF-8”));
OutputStreamWriter saida = new OutputStreamWriter(conexao.getOutputStream(),“UTF-8”);
Estou colocando assim tento no servidor quanto no cliente.
rafaelSaqueli
Pesquisando por ai vi também pessoas dizendo que pode ser problema na máquina virtual e que teria que compilar no windows o que for rodar no windows e no linux o que for pra rodar no linux, mas pensei, e a independencia de plataforma onde fica? porém, mesmo assim tentei compilar nas duas plataformas e NADA. Teoria Furada.
Então, descobri mais um jeito de não resolver esse problema, se mais alguém souber outra maneira de resolver…