Problema com acentuação

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

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á.

Cara

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

Vou fazer os testes e posto o resultado.

Obrigado.

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?

Tenta isso

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

ou isso;

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

cara

continua a mesma

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.

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á.