[RESOLVIDO] Receber caracteres especial no Servlet (letras acentuadas)

Boa tarde galera, estou com um problema, estou enviando informações através de um Input:

<form name="enviaFiltro" action="http://localhost:8080/treinamento/AlunoServlet?acao=listar" method="post"> <input id="filtro" name="filtro" class="text" type="text" value=""/> <a class="linkMenuPrincipal" href="#" onclick="enviaFiltro.submit()">Listar Alunos</a> </form>
até aí tudo bem, o negócio é receber esses dados no Servlet, como faço pra receber de forma correta os caracters com acento?

Ex.:

String filtro = request.getParameter("filtro"); System.out.println("filtro "+filtro);
ao enviar “á” recebo: á

desde já agradeço a colaboração.

1 curtida

Você precisa definir o encoding do request

ou dependendo do encoding

1 curtida

[quote=sergio7888]Você precisa definir o encoding do request

ou dependendo do encoding

[/quote]

obrigado pela ajuda.

cloquei assim (o encode definido no JSP é o UTF-8):

request.setCharacterEncoding("UTF-8"); HttpSession session = request.getSession(); session.setAttribute("mapAlunos", mapAlunos);
mas continuou da mesma forma, fiz algo errado?
essa implementação está no meu método lista do meu servlet:

[code] private void listar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
@SuppressWarnings(“unchecked”)
Map<String, AlunoTO> mapAlunos = (Map<String, AlunoTO>) request.getSession().getServletContext().getAttribute(“alunos”);

	HttpSession session = request.getSession();
	session.setAttribute("mapAlunos", mapAlunos);	
        request.setCharacterEncoding("UTF-8");
	String filtro = request.getParameter("filtro");	
	System.out.println("filtro "+filtro);
	
	
	String pagina = "/treinamento/aluno/alunoListar.jsp";
	session.setAttribute("pagina", pagina);
	request.setAttribute("targetPage", TreinamentoConstantes.FORM_LISTAGEM);		
	request.getRequestDispatcher("/treinamento/geral/mainLayoutBody.jsp").forward(request, response);		
}[/code]

Verifique se a pagina que esta enviando esta em UTF-8, se estiver tente colocar ‘accept-charset=“UTF-8”’ na sua tag form pois o navegador pode estar enviando em um charset diferente.

dentro da minha tag head esta assim:

daí alterei o form onde está meu input para:

<form name="enviaFiltro" action="http://localhost:8080/treinamento/AlunoServlet?acao=listar" method="post" accept-charset="UTF-8"> <input id="filtro" name="filtro" class="text" type="text" value=""/> <a class="linkMenuPrincipal" href="#" onclick="enviaFiltro.submit()">Listar Alunos</a> </form>
mas o resultado continuou o mesmo

Após teste vejo que o problema não esta no encode do request
se você colocar no seu servlet

ServletOutputStream out = response.getOutputStream(); out.println("filtro " + filtro); out.println("á"); System.out.println("filtro " + filtro); System.out.println("á");
verá que o problema esta na forma que o System.out escreve os acentos.

Se necesssario remova o request.setCharacterEncoding

primeiramente agradeço pela ajuda.

Testei algumas sugestões, mas a q funcionou foi a de simplesmente alterar o charset de utf-8 para iso-8859-1 na minha JSP.

abraço.

1 curtida