Varrendo uma String e substituindo os caracteres por uma string nova

Fala Galera,

O tópico já da mais ou menos o que eu quero, estou tentando varrer uma String e trocar os caracteres especias ou com acentos por novas “String” digamos…

O conceito é que a URL não aceita palavra com acento e as codificam, já tentei usar o encode e decode, porem não tive exito, minha unica tentativa é trocar os caracteres, mas não estou conseguindo substituir, o caso é que preciso disso para acessar dados do WS.

Alguém poderia me ajudar ?

Abraços, e até mais.

Não se percebi o que queres… será isto?

import java.net.URLEncoder;
...

String str = "Texto áéíóú";
String encoded = URLEncoder.encode(str, "UTF-8");

Isto não me ajudou amigo, o texto que a URL aceita é diferente do que o URLEncoder traz…

Queria substituir por código direto, por exemplo:

João virar Jo%C3%A3o, por que o url aceita,

portanto gostaria de sustituir o ‘ã’ por %C3%A3

Você poderia usar a classe java.net.URI e o método toASCIIString, como em:

new URI("João").toASCIIString();

O resultado seria:
Jo%C3%A3o

Mas é exatamente isso que o URLEncoder faz!

 String str = "João";
 String encoded = URLEncoder.encode(str, "UTF-8");
 System.out.println(str +" -> " + encoded);

Resultado:
João -> Jo%C3%A3o

Obrigado companheiro,

Já descobri o erro, a Classe Scanner tava mudando a conversão, mas já foi resolvido…

Mas me diga uma coisa…

Como eu trato os espaços em braco ??

ex: João Vitor ficaria Jo%C3%A3o%20Vitor, mas o programa me retorna Jo%C3%A3o+Vitor.

Desde Já Agradeço.

A forma correta de tratar os espaços em branco na submissão de dados é o +
O %20 apenas é usado na path do endereço.

Pois então, como é via WS, a url não entende o ‘+’, por isso quero trocar por %20.

Abraços.

Já resolvi aqui , Obrigado.

Quando você diz WS você se refere ao JAX-WS né?
Ele não lida bem com o + na url mesmo? Como você fez para resolver?

Na verdade só me referia a Web Service rs.

1 curtida