Criei um projeto utilizando o framework vraptor. Internamente, o projeto funciona que é uma beleza. Após ter sido feito o deploy, os dados que são cadastrados no banco, ficam com codificação estranha… Não sei o que pode estar acontecendo.
Quando visualizo uma página do site e peço para visualizar a codificação da página, a página está em UTF-8. Porém quando mando gravar, e depois visualizo as informações tanto no banco quanto na página, fica com aquelas acentuações estranhas.
Acredito que:
Em algum momento, os arquivos java, estão “desconvertendo” a informação e gravando errado no banco. Pois não vejo outra explicação. Alguem poderia me ajudar?
Desde já, Agradeço e que Jesus abençoe a todos. Jesus os ama.
Lucas, pelos testes que fiz o vraptor não usa utf-8 como padrão, correto? Se eu não coloco o context-param para utf-8 os caracteres ficam todos deformados.
Ou caso eu não colocar o br.com.caelum.vraptor.encoding ele herda do container? Pela especificação o padrão é iso-8859-1.
Pois é pessoal, eu tenho uma situação muito parecida com o problema mencionado logo no início, porém meu banco foi criado com ISO-8859-1 (LATIN1) e por este motivo o projeto WEB foi todo desenvolvido com charset ISO-8859-1, mas tem uma pequena parte de um .JSP que é feito uma chamada para uma .TAG e justamente neste local não esta funcionando corretamente o mapa de caracteres definido (ISO-8859-1), não sei mais o que fazer, já tentei quase tudo.
Alguém tem alguma ideia do que pode estar ocorrendo ?
NOTA: Em todas as outras telas .JSP a persistência no banco com dados acentuados é feita corretamente, só nesta .TAG criada via JSTL que não envia para o Hibernate corretamente, ou seja, só envia caracteres estranhos no local da acentuação.
Obrigado a todos.
[b]
EDITADO
[/b]
Para aqueles que estão tendo problemas com o charset adequado ao banco de dados, nunca se esquecer e informar o “encoding” correto e principalmente se estiverem enviando dados acentuados via AJAX, informar os seguintes parâmetros:
encoding = charset correto para o seu banco
contentType = 'application/x-www-form-urlencoded’
Sendo assim pelo prototype, usando o charset ISO-8859-1, ficará assim:
var myAjax = new Ajax.Request(url, {
/*
Para evitar o problema de acentuação entre UTF-8 e ISO-8859-1 (LATIN1)
é necessário aplicar o "encoding" e também "contentType",
porém NUNCA se esquecer de enviar pelo método POST.
*/
method: 'post',
encoding: 'ISO-8859-1',
contentType: 'application/x-www-form-urlencoded',
asynchronous: true,
parameters: "endereco.id="+document.getElementById("id").value+"&endereco.logradouro="+document.getElementById("logradouro").value,
onComplete: function(data) {
//recebe o objeto json e faz eval
var jsonObject = eval('(' + data.responseText + ')');
if (jsonObject.erros != null)
alert(jsonObject.erros);
else
alert('Dados enviados com sucesso!');
},
onFailure: function(t) {
alert('Error ' + t.status + ' -- ' + t.statusText)
}
});
Espero que ajude a esclarecer algumas dúvidas ou direcionar a um caminho de sucesso.