Problemas com CharSet

12 respostas
M

Boa Tarde Galera, seguinte estou tendo dificuldade com charset, que é o seguinte tenho uma pagina JSP, que envia os dados para uma Servlet que na sequencia envia para um email, ocorre o seguinte quando os dados chegam no email, eles estão com caracteres invalidos/incorretos, conforme mostrado abaixo.

Remetente: moisés
email: [email removido]
Cidade: guará
Instituição: católica
Telefone: 094949
TESTE §Ãºcar

pesquisando, encontrei aqui no GUJ, este método.

System.setProperty("mail.mime.charset", "ISO-8859-1");

Assim, utilizei o mesmo e o resultado ficou assim, eu recebo agora o email com todos os dados da minha JSP correto, contudo, se observar veremos que o String Instituição “esta declarada dentro da Servlet”, esta com ? ? no lugar de çã e não sei como resolver isso,

Remetente: moisés inácio
email: [email removido]
Cidade: ceará
Institui��o: projeção
Telefone: 99494
Testes diários

com nenhuma das duas formas abaixo eu consegui sucesso,

//textoCompleto.append("Institui\u00E7\u00E3o: ").append(instituicao).append("\n");
textoCompleto.append("Instituição: ").append(instituicao).append("\n");

Alguem ai sabe como posso resolver esse problema?

obs. Ambiente de desenvolvimento Windows, contudo, o projeto roda no LINUX.
:?: :shock:

12 Respostas

Z111

Os valores estão chegando corretos na servlet e errados somente no e-mail?

M

isso mesmo.

M
quer dizer agora os valores estão chegando corretos na servlet e no email, o problema é esse, olha a String declarada dentro da Servlet.
# //textoCompleto.append("Institui\u00E7\u00E3o: ").append(instituicao).append("\n");  
# textoCompleto.append("Instituição: ").append(instituicao).append("\n");
Olha como ela chega no meu email
Institui��o: Projeção

entende? e eu ja tentei um catatal de configuração de encode/charset e não consegui resolver.

Z111

veja se ajuda: http://www.guj.com.br/posts/list/42071.java

M

ajudou muito não meu brother, mas, VLW!

M

E ai galera, alguem tem uma ideia de como resolver o problema informado.

Hebert_Coelho

Cara, imagino 2 coisas:
1 - tenta colocar seu request com o enconde UTF-8. “request.setCharacterEncoding(“UTF-8”);”

2 - Caso tenha algo no DB, veja o enconde dos campos.

M

Boa tarde jakefrog, cara fiz o que vc falou mas continua o mesmo problema, quanto ao BD, neste caso não estou acessando, eu recebo uma string via http e a outra ja esta na minha servlet, contudo, tentei varias encoders e ou a string que eu recebo via http fica mal formatada ou a que esta dentro da minha servlet.

VLW.

Hebert_Coelho

Moises Moura:
Boa tarde jakefrog, cara fiz o que vc falou mas continua o mesmo problema, quanto ao BD, neste caso não estou acessando, eu recebo uma string via http e a outra ja esta na minha servlet, contudo, tentei varias encoders e ou a string que eu recebo via http fica mal formatada ou a que esta dentro da minha servlet.

VLW.

Dá uma olhada no teu web.xml . Lá costuma ter uma opção. A que eu sempre usei e não dei problema é <?xml version="1.0" encoding="UTF-8"?> .

Fica na primeira linha.

M

Boa tarde JakeFrog, velho deu certo não ! muito louco isso. de qq forma VLW pela força.

M

Boa tarde Galera, consegui resolver o problema, tinha seguido o exemplo do jakefrog

Cara, imagino 2 coisas:
1 - tenta colocar seu request com o enconde UTF-8. “request.setCharacterEncoding(“UTF-8”);”

2 - Caso tenha algo no DB, veja o enconde dos campos.


só que não tinha dado certo a primeira vista, pois estava setando a request dentro do try, depois setei como a primeira instrução da servlet rodou certinho.

protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("utf-8");//setando a request aqui os caracteres saem corretos.
		
		String host = "XX.XYZ.ABC.RZO ";
		
		String remetente = request.getParameter("fldRemetente").trim();
		String instituicao = request.getParameter("fldInstituicao").trim();
		String cidade = request.getParameter("fldCidade").trim();
		String telefone = request.getParameter("fldTelefone").trim();
		String emailRemetente = request.getParameter("fldEmail").trim();
		String assunto = request.getParameter("fldAssunto").trim();
		String texto = request.getParameter("texto");
		StringBuffer textoCompleto = new StringBuffer();
		textoCompleto.append("Remetente: ").append(remetente).append("\n");
		textoCompleto.append("email: ").append(emailRemetente).append("\n");
		textoCompleto.append("Cidade: ").append(cidade).append("\n");
		textoCompleto.append("Institui\u00E7\u00E3o: ").append(instituicao).append("\n");
		textoCompleto.append("Telefone: ").append(telefone).append("\n");
		textoCompleto.append(texto);
		try {
                        //request.setCharacterEncoding("utf-8"); //quando setava a request aqui os caracteres saiam errados.
			// Get system properties
			Properties props = System.getProperties();

			// Setup mail server
			props.put("mail.smtp.host", host);

então, o problema foi resovlido, se alguem puder colocá-lo como encerrado agradeço.

Valeu ai Z e jakefrog pela força!

Hebert_Coelho

Po que bom cara.

Eu descobri por que não estava funcionando dentro do try.

Vc estava recuperando as informações antes de colocar charset utf 8. Haha! =P

Mas que bom que funcionou.

Qualquer coisa, é só chamar. [=

Criado 23 de julho de 2010
Ultima resposta 5 de ago. de 2010
Respostas 12
Participantes 3