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!