Problema com acentuação

7 respostas
P

Pessoal

Eu sei que vão me falar sobre ISO, UTF-8, mas já saibam que testei todas as combinações possíveis e imagináveis, e não resolveu meu problema.

Estou trabalhando em 2 projetos. Em ambos utilizo VRaptor e Ajax (utilizo a biblioteca JQuery, que muitos devem conhecer, inclusive da apostila de VRaptor da Caelum).

Tenho formulários que o usuário deve preencher, e o submit é feito via Ajax, pelo Jquery. Ai que mora o problema, quando alguma campo tem acentuação, ou ç.

Na função javascript onde faço a requisição Ajax, coloquei um alert, para me mostrar o valor dos campos do formulário, e mostra “errado” sempre, o que acho q é normal. Por exemplo, ao invés de Angélica, mostra Ang%C3%A9ica. Até ai OK, e envia o valor dos formulários para a minha logic.

Acontece que, se na minha logic, faço o System.out.println do parâmetro, ocorre algo muito estranho. Se estou utilizando o Firefox, imprime Angélica, e assim coloca no banco. Mas se estou no IE, imprime Ang%C3%A9ica e coloca assim no banco tbm. Isso acontece nas duas aplicações q estou trabalhando.

Por favor, não me mandem simplesmente usar o firefox, porque não posso impor isso aos meus usuários, obviamente.

Ja tentei alterar a codificação dos meus navegadores, das minhas jsp… e nada funciona.

Se alguém puder me ajudar, agradeço muito.

Abraços

7 Respostas

fmad27

Cara tenta isso aqui:

Na sua Action ou na sua Servlet antes de mandar o response.

response.encodeRedirectURL("ISO-8859-1");
response.encodeURL("ISO-8859-1");

Ja tivemos o mesmo problema aqui e isso resolveu,
como usamos Struts colocamos isso na Action, caso você use Servlet coloca lá.

P

Cara

Eu uso Vraptor, acho que seria para colocar no logic entao, ou no interceptor.

Vou fazer os testes e posto o resultado.

Obrigado.

P

Cara

Coloquei isso em todo lugar que pude imaginar, e nao resolveu

Uma coisa q descobri… se no meu Ajax mandar por GET, em TODOS browsers da o problema… se mandar por POST, soh no firefox funciona direito.

Alguma idéia?

fmad27

Tenta isso

request.setCharacterEncoding(“ISO-8859-1”);

ou isso;

request.setCharacterEncoding(“ISO 8859-1”);

P

cara

continua a mesma

fsfnit

Quando vc seta o encode, o servidor (Tomcat da vida) envia para o Browser o encode que este deva trabalhar, e este troca automaticamente o seu próprio encode, mas tudo isso de forma transparente.
Agora se esta dando problema no seu IE (o que não é dificil de se acreditar) seu IE deve estar bixado. Dê uma fuçada nas opções avançadas dele sobr enconde e charsets.

como disseram antes : response.setContentType(“text/hmtl; Charset=ISO-8859-1”); deveria resolver.

P

Mas cara, o problema não deve estar no meu response, pq o problema não é apenas o IE colocar os dados de forma errada na tela… o problema deve estar no request, porque está salvando no banco de dados tudo errado já.

Criado 7 de abril de 2009
Ultima resposta 8 de abr. de 2009
Respostas 7
Participantes 3