Struts - problema com acentos no Linux

6 respostas
bonfarj

O sistema web que estou desenvolvendo funciona sem problemas no Tomcat do Windows… quando coloco no Tomcat do Linux, reparei que ao ler um registro “canção” ele escreve “can??o”.

alguém sabe o que pode ser?

abraços!

6 Respostas

bonfarj

Percebi que não é exatamente como eu falei. O problema não é ao ler o registro, e sim ao salvar.

Quando eu salvo um registro com acento, ele grava errado no banco. Porém, quando eu edito um registro do banco na mão e insiro o acento, ele é lido corretamente.

ninguém sabe o que pode ser? :cry:

P

O problema é que, em Windows, a codificação padrão da plataforma, seguida pela JVM é a CP-1252, semelhante à ISO-8859-1. Em resumo, 8 bits por caracter e os acetuados estão na faixa >127.

Em Linux, ao menos nas versões mais recentes, a codificação default é UTF-8. Nela, caracteres acentuados são representados por dois bytes.

O problema normalmente ocorre quando se leva fontes java de uma plataforma para outra contendo caracteres acentuados. Outra possibilidade é vc. não especificar na resposta http a codificação usada, e, no caso de um cliente windows, pode acabar sendo diferente da que o tomcat opera.

Algumas possibilidades para recolver seu problema:

  1. Mude a codificação padrão da JVM no linux para ISO-8859-1, usando a propriedade java.io.encoding

  2. Verifique que suas páginas JSP e HTML usem entidades HTML (á no lugar de á, p.ex).

  3. No caso de conteúdo dinâmico, lembre-se de usar o “page encoding” no JSP e, no caso de um framework MVC qualquer, mandar o header apropriado.

  4. Coloque tb. um tag “meta” na página, para deixar bem claro para o borwser o que vc. está mandando.

  5. No caso do tratamento de POSTS, use o atributo “enctype” para convencer o browser a mandar a informação com o encoding.

V

Se você preferir, você pode setar o locale pt_BR como default no seu sistema. Também irá funcionar.

Locale.setDefault(new Locale("pt",BR));
bonfarj

valeu pelas dicas pessoal, brigadão!!! :stuck_out_tongue:

A

Alguem conseguiu fazer isso?? :slight_smile:

psevestre:
O problema é que, em Windows, a codificação padrão da plataforma, seguida pela JVM é a CP-1252, semelhante à ISO-8859-1. Em resumo, 8 bits por caracter e os acetuados estão na faixa >127.

Em Linux, ao menos nas versões mais recentes, a codificação default é UTF-8. Nela, caracteres acentuados são representados por dois bytes.

O problema normalmente ocorre quando se leva fontes java de uma plataforma para outra contendo caracteres acentuados. Outra possibilidade é vc. não especificar na resposta http a codificação usada, e, no caso de um cliente windows, pode acabar sendo diferente da que o tomcat opera.

Algumas possibilidades para recolver seu problema:

  1. Mude a codificação padrão da JVM no linux para ISO-8859-1, usando a propriedade java.io.encoding

  2. Verifique que suas páginas JSP e HTML usem entidades HTML (á no lugar de á, p.ex).

  3. No caso de conteúdo dinâmico, lembre-se de usar o “page encoding” no JSP e, no caso de um framework MVC qualquer, mandar o header apropriado.

  4. Coloque tb. um tag “meta” na página, para deixar bem claro para o borwser o que vc. está mandando.

  5. No caso do tratamento de POSTS, use o atributo “enctype” para convencer o browser a mandar a informação com o encoding.

bonfarj

Mandei um System.out.println(Locale.getDefault()); e descobri que já estou com pt_BR. No entanto, se escrevo algo como System.out.println(ááá); os acentos não são visualizados. Caso algum moderador veja esse tópico, peço que mande para outro fórum, pois agora tenho certeza que não tem nada a ver com web. :oops:

Alguém sabe o que é?

Criado 19 de outubro de 2006
Ultima resposta 17 de nov. de 2006
Respostas 6
Participantes 4