Como você codifica um URL no Android?
Eu pensei que era assim:
final String encodedURL = URLEncoder.encode(urlAsString, "UTF-8");
URL url = new URL(encodedURL);
Se eu fizer o acima, o http://
in urlAsString
é substituído por http%3A%2F%2F
in encodedURL
e recebo um java.net.MalformedURLException
quando uso o URL.
Uri.encode(query);
vez disso.Vou adicionar uma sugestão aqui. Você pode fazer isso, evitando a necessidade de obter bibliotecas externas.
Faça uma tentativa:
Você pode ver que, neste URL específico, preciso ter esses espaços codificados para que eu possa usá-lo para uma solicitação.
Isso tira proveito de alguns recursos disponíveis nas classes do Android. Primeiro, a classe de URL pode quebrar um URL em seus componentes adequados, para que você não precise executar nenhum trabalho de pesquisa / substituição de string. Em segundo lugar, essa abordagem aproveita o recurso da classe URI de componentes que escapam adequadamente quando você constrói um URI por meio de componentes, e não a partir de uma única sequência.
A vantagem dessa abordagem é que você pode pegar qualquer string de URL válida e fazê-la funcionar sem precisar de nenhum conhecimento especial dela.
fonte
Para android, eu usaria String android.net.Uri.encode (String s)
Ex/
fonte
Uri.encode("a=1&b=1")
produz,a%3D1%26b%3D1
mas o esperadoa=1&b=1
a=1&b=1
como uma consulta, você deseja consultar exatamente isso.Também você pode usar isso
é o método mais simples
fonte
fonte
você pode usar os métodos abaixo
ou
o segundo é melhor que o primeiro.
fonte
Encontre caracteres árabes e substitua-os por sua codificação UTF-8. algo assim:
fonte