Olá, rock!
Muito bom o link que você passou. Obrigado!
Eu acho que acabei de achar o problema. Bem, me parece que não está UTF-8, quando eu passo a informação por parametro para o meu servlet. Veja bem. Eu tenho um jsp, que será responsável por pegar o título em um banco de dados. Está funcionando corretamente com todos os acentos, ou seja, por aí, o problema não está no banco de dados. Porém, quando eu vou clicar na mensagem, vai redirecionar para o servlet, e usando essa mesma mensagem, vai buscar no banco de dados. Mas, o erro está ao passar o parametro para o servlet. Ou seja, quando passa para o servlet, não passa com os acentos. Eu percebi isso, ao exibir a mensagem que está no parametro.
Veja:
String titulo = request.getParameter("titulo");
System.out.println(titulo);
Saída:
“Brasil ?? o maior mercado…”
Atualizado: Depois de tantas pesquisas, eu acho que o problema está no Tomcat. Mas, eu já mudei todas os encoding, não resolveu o problema.
Para ISO-9959-1: Brasil é o maior mercado…
Default - inherited (ANSI_X3.4-1968): Brasil ?? o maior mercado…
Já mudei para várias, principalmente UTF-8, e nada, continua como se fosse ISO-9959-1. Sinceramente, que coisa mais chata de se mecher.
Lembrando também, que alterei o server.xml do Tomcat para URIEncoding=“UTF-8”. E o resultado ? Nada! Continua não funcionando!
Eu também tentei fazer:
if(request.getCharacterEncoding() == null)
request.setCharacterEncoding("UTF-8");
String titulo = request.getParameter("titulo");
Em JSP:
URLEnconde.encode("titulo aqui", "UTF-8");
Espero que alguém possa me da uma luz para poder resolver o problema. Já não sei mais o que fazer.
Atualizado
Finalmente eu consegui resolver o problema, depois de tanta, mas tanta pesquisa e sobretudo tentativas. Vejamos o problema:
Basta colocar o URLEnconder.encode para iso-8859-1 na sua URL que você deseja passar:
URLEncoder.encode("Titulo", "iso-8859-1")
Atualizado
Novamente estou tendo problemas com enconding, eu nunca na minha vida, eu vi algo tão chato quanto a isso. Veja bem.
Quando eu passo o parametro utilizando o iso-8859-1 conforme escrito acima, o servlet recebe e passo para um jsp com as caracteres corretas, porém, no browser aparece:
Network+%E0, ou seja, em vez de aparecer: Network à, aparece %E0.
Agora, se eu mudo de iso-8859-1, para UTF-8. No browser passa perfeitamente, ou seja: Network+à+, porém, quando vai colocar na página jsp, aparece: Network Ã. Agora, quando eu vou exibir antes de passar para o jsp, ou seja no servlet, aparece: Network ?.
O que eu faço ? Não aguento mais tentar resolver essa situação chata de encoding e nada!