Remover Caracteres especiais antes de gravar no banco

Boa noite, senhores!
Estou tentando implementar uma função em um projeto meu e estou encontrando dificuldades para finaliza-lo.

Eu tenho um formulário de contato que possui campos de texto, eu preciso pegar os dados recebidos por esse form e remover todos os caracteres especiais (se houverem) desta String antes de gravar no banco.

Eu estou lendo sobre uma função chamada Replace All e, com base em uma pesquisa no oráculo (Google), consegui encontrar este código:

[code]import java.text.Normalizer;

public class Formatar
{
public static void main(String[] args)
{
String texto = “ÁÀÂÃçÇ”;
texto = Normalizer.normalize(texto,Normalizer.Form.NFD);
texto = texto.replaceAll("[^\p{ASCII}]", “”);
System.out.println(texto);
}
}[/code]

Eu adaptei ele e implementei o mesmo em um código Stand alone e ele funcionou tranquilamente, porém, quando eu transfiro o mesmo para o meu servlet (que realiza o processo de guardar os dados no banco) ele substitui os caracteres Á, É, Í, Ó, Ú… para a letra A.

Desta forma, o se eu digitar as letras ÁÉÍÓÚ:

O resultado é: AAAAA.

Alguém saberia me informar se esta função pode ser utilizada para trabalhar com projetos web?? E, se sim, como arruma-la??

Pesquisei sobre a função Regex/Pattern mas não consegui entende-la direito.

Obrigado pela ajuda desde já!

Abraço!

Olá,


public class NormalizaStringtoHTML {

	public static String normalizaHTML(String teste) {
		// TODO Auto-generated method stub

		teste = teste.replace("ç", "c");
		teste = teste.replace("Ç", "C");
		
		teste = teste.replace("é", "e");
		teste = teste.replace("É", "E");
		teste = teste.replace("ê", "e");
		teste = teste.replace("Ê", "E");
		
		teste = teste.replace("á", "a");
		teste = teste.replace("Á", "Á");
		teste = teste.replace("â", "â");
		teste = teste.replace("Â", "Â");
		teste = teste.replace("à", "à");
		teste = teste.replace("À", "À");
		teste = teste.replace("ã", "ã");
		teste = teste.replace("Ã", "Ã");
		teste = teste.replace("ª", "ª");
		
		teste = teste.replace("Í", "Í");
		teste = teste.replace("í", "í");
		teste = teste.replace("Î", "Î");
		teste = teste.replace("î", "î");
		teste = teste.replace("Ì", "Ì");
		teste = teste.replace("ì", "ì");
		teste = teste.replace("Ï", "Ï");
		teste = teste.replace("ï", "ï");
		
		teste = teste.replace("ó", "ó");
		teste = teste.replace("Ó", "Ó");
		teste = teste.replace("ò", "ò");
		teste = teste.replace("Ò", "Ò");
		teste = teste.replace("ô", "ô");
		teste = teste.replace("Ô", "Ô");
		teste = teste.replace("õ", "õ");
		teste = teste.replace("Õ", "Õ");
		teste = teste.replace("º", "º");
		
		teste = teste.replace("Ú", "Ú");
		teste = teste.replace("ú", "ú");
		teste = teste.replace("Û", "Û");
		teste = teste.replace("û", "û");
		teste = teste.replace("Ù", "Ù");
		teste = teste.replace("ù", "ù");
		teste = teste.replace("Ü", "Ü");
		teste = teste.replace("ü", "ü");

		teste = teste.replace("%", "%");
		return teste;
	}
	public static String normalizaCampoHTML(String teste) {
		// TODO Auto-generated method stub
		teste = normalizaHTML(teste);
		teste = teste.replace("\"","&quot");
		teste = teste.replace("<","&lt");
		teste = teste.replace(">","&gt");
		teste = teste.replace("&","&amp");
		
		return teste;
	}

}

Na verdade eu uso essa para trocar por caracteres da tabela de acentuação e
caracteres especiais (entities) em HTML.

Flw.

Dá sim… que tecnologia vc tá usando?

Se for JSF e você quiser remover caracteres especiais em todas as entradas, dá pra implementar um Listener pra isto…

Olá vertuam !

Tentei utilizar este código que você passou mas também não adiantou.
Digitei as letras Á É á é e ele me retornou Ã? Ã? á é.

Olá rodrigomarcelo!
Estou usando apenas JSP com Servlets. Estou pegando os valores em um textfield no jsp e passando para o servlet (que é onde eu preciso tratar as String antes de manda-las para o banco).

Eu utilizei em um JSP e funcionou, você trocou todas as letras com acento da segunda posição para letras sem acento?

Até.

Eu vou dar uma olhada hoje novamente no código e ver se tem algo errado.

Eu estou tentando de dois modos:

1- Convertendo os caracteres dentro do Servlet no momento em que ele recebe os campos;

2- Enviando para uma classe que converte e retorna a string sem os caracteres especiais.

Nenhum deles deu certo, ele funciona e converte os caracteres mas não tira a acentuação mas pelo contrário, suja mais ainda a String.

Não, da mesma forma não está dando certo.

Esta função Replace All funciona com servlets??

Pois estou testando ela em uma aplicação Stand alone e ela funciona corretamente, porém quando vou passar para o meu servlet ela não converte e apresenta resultados do tipo queeu citei acima.