Struts - problema com acentos no Linux

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!

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:

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.

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));

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

Alguem conseguiu fazer isso?? :slight_smile:

[quote=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.[/quote]

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 é?