Encoding em sockets Windows com Linux

5 respostas
rafaelSaqueli

Olá,

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.

Alguém sabe como resolver isso?

Obrigado.

5 Respostas

E

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…

Obrigado.

rafaelSaqueli

Nada ainda pessoal!

Criado 30 de setembro de 2009
Ultima resposta 5 de out. de 2009
Respostas 5
Participantes 2