Converter String de utf8 to unicode JAVA

Olá,

Alguém poderia me informa uma forma de percorrer uma string que verifica se é caracter especial e substituir para o código do utf8.

Em PHP seria assim http://php.tonnikala.org/manual/pt_BR/function.unicode-encode.php, mas quer saber se já tem algum método que faz isso em JAVA.

Obrigado

[quote=fernando n vicente]Olá,

Alguém poderia me informa uma forma de percorrer uma string que verifica se é caracter especial e substituir para o código do utf8.

Em PHP seria assim http://php.tonnikala.org/manual/pt_BR/function.unicode-encode.php, mas quer saber se já tem algum método que faz isso em JAVA.

Obrigado[/quote]

[i]Você quer converter pra que?

[/i]

qual é a motivação pra fazer isso?

quero converter pq utilizo múltiplos idiomas e gravar esse conteúdo em um arquivo

então é só usar o mesmo encoding (ex. UTF-8 ) para tudo, não precisa ficar convertendo nada.

quando estiver percorrendo a string e encontrar um caracter especial, tenho que substituir para \u65e5, por exemplo

Faça algo parecido com isso:

String texto1 = "abc";
byte array[] = texto1.getBytes("UTF-8");

Depois transforme em String novamente e guarde como quiser.

Por favor, alguém poderia me ajudar a percorrer uma string e verificar se o caracter é especial, se for substituir pelo código ascii, depois retornar a string modificada.

por exemplo => [color=red]endereço[/color] em [color=darkred]endere\u00e7o[/color]

Obrigado

aí é que está, vc não precisa fazer isso, é só setar o encoding corretamente…

o JoaoBluSCBR te deu uma solução razoável pra fazer o que vc quer:

byte array[] = texto.getBytes("UTF-8");
String novaString = new String(array, "ISO-8859-1");

vc pode trocar esses encodings pro que vc quiser… mas vc precisa saber qual é o encoding original

OK! mas o que precisava era isso

package com.siter.model.external;

public class UnicodeString {

	public String convert(String str) {
		StringBuffer ostr = new StringBuffer();

		for (int i = 0; i < str.length(); i++) {
			char ch = str.charAt(i);
			/* caracter precisa ser convertido para unicode? */
			if ((ch >= 0x0020) && (ch <= 0x007e)) {
				/* não */
				ostr.append(ch);
			} else {
				/* sim */
				ostr.append("\\u"); /* formato de unicode padrão */
				/* pega o valor hexadecimal do caracter */
				String hex = Integer.toHexString(str.charAt(i) & 0xFFFF);
				for (int j = 0; j < 4 - hex.length(); j++) {
					/* concatena o zero porque o unicode requer 4 digitos */
					ostr.append("0");
				}
				ostr.append(hex.toLowerCase());
			}
		}
		return (new String(ostr));
	}
	
	public static void main(String[] args) {
		System.out.println(new UnicodeString().convert("endereço"));
	}
}

[quote=Lucas Cavalcanti]aí é que está, vc não precisa fazer isso, é só setar o encoding corretamente…

o JoaoBluSCBR te deu uma solução razoável pra fazer o que vc quer:

byte array[] = texto.getBytes("UTF-8");
String novaString = new String(array, "ISO-8859-1");

vc pode trocar esses encodings pro que vc quiser… mas vc precisa saber qual é o encoding original[/quote]

Perfeito, cara. Valeu!