Decodificar Caracter

3 respostas
M

Boa Tarde galera
Bom tenho um problema que não consigo resolver de maneira alguma… Já tentei procurar em outros lugares e sempre encontro outras respostas mas nunca a que eu preciso… por enquanto hehehe
Bom vamos lá:
Eu tenho dois bancos diferentes do postrgeSQL. Faço o select no dois bancos para comparar dois valores
por exemplo:

SELECT nome1 FROM tabela1 //SERIA DO BANCO 1

SELECT nome2 FROM tabela2 //SERIA DO BANCO 2

Até aí tudo blz, o problema é que o BANCO 1 tem codificação LATIN1 e o BANCO 2 tem codificação SQL_ASCII

Essas strings (nome1 e nome2) TEM ACENTUAÇÃO e com isso quando vou fazer a comparação não da certo devido o encoding. Alguém sabe como eu converter algum enconding pra que quando for comparar as duas Strings dê certo???

Desde já agradeço

=D

3 Respostas

finotti

se o seu problema for só a acentuação, use essa classe:
se não me engano, foi postada pelo thingol num outro topico

public class RemoverAcentos {
	
	static String acentuado = "çÇáéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙãõñäëïöüÿÄËÏÖÜÃÕÑâêîôûÂÊÎÔÛ";
	static String semAcento = "cCaeiouyAEIOUYaeiouAEIOUaonaeiouyAEIOUAONaeiouAEIOU";
	static char[] tabela;
	
	static {
		tabela = new char[256];
		for (int i = 0; i < tabela.length; ++i) {
			tabela[i] = (char) i;
		}
		for (int i = 0; i < acentuado.length(); ++i) {
			tabela[acentuado.charAt(i)] = semAcento.charAt(i);
		}
	}

	public static String remover(final String s) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < s.length(); ++i) {
			char ch = s.charAt(i);
			if (ch < 256) {
				sb.append(tabela[ch]);
			} else {
				sb.append(ch);
			}
		}
		return sb.toString();
	}

	public static void main(String[] args) {
		String s = "Gisele Bündchen da Conceição e Silva foi batizada assim em homenagem à sua conterrânea de Horizontina, RS.";
		s = RemoverAcentos.remover(s);
		System.out.println(s);
	}
xjcd

Amigo,

Tente converter as String para o mesmo enconding antes de comparar.

String s = new String("Júlio".getBytes(),"latin1");
     String s2 = new String("Júlio".getBytes(),"latin1");
M

Obrigado pelas respostas, a classe para retirar os acentos é boa mas no momento não seria retirar os acentos não

xjcd cara eu tentei usar o que vc me passou mas ele não mudou não! Continuou com o mesmo erro!
Creio que seja pelo motivo que quando dou um getBytes ele pega o byte já codificado…

Mas veleu pela dica!

=D

Criado 8 de outubro de 2008
Ultima resposta 8 de out. de 2008
Respostas 3
Participantes 3