android 将字符串转换为有效的URL链接

1bqhqjot  于 2023-01-28  发布在  Android
关注(0)|答案(1)|浏览(356)

我正在用JSoup解析一个网站的一些值,其中一些也是url链接(href)。当我得到url链接时,我将其设置为字符串。字符串有时不会成为有效的url链接,因为它有一个特殊字符,如'!?()
例如:https://somelink.com/King's+Beak('使链接无效)。现在我通过用UTF-8的默认字符集替换字符来解决这个问题,它应该正常工作。
示例代码:

String test = arTD.select("a.wiki_link").get(0).attr("href").replaceAll("'", "%27");

我还将JSoup设置为UTF-8,但这似乎不起作用。

Document document = Jsoup.parse(response.body().string(), "UTF-8");

现在我的问题是,有没有更方便的方法来解决这个问题?,因为我需要转义更多的字符,如'!?()。
先谢谢你。

qeeaahzv

qeeaahzv1#

解决这个问题的一个方法是使用**URLEncoder.encode()**方法对URL字符串进行编码。这个方法会将特殊字符替换为相应的ASCII代码。

String test = arTD.select("a.wiki_link").get(0).attr("href");
String encodedUrl = URLEncoder.encode(test, StandardCharsets.UTF_8);

解决这个问题的另一种方法是使用android中的Uri.Builder类对URL进行编码。

Uri.Builder builder = new Uri.Builder()
        .scheme("https")
        .authority("link.com")
        .appendPath("King's+Beak");

Uri uri = builder.build();
String encodedUrl = uri.toString();

第一个方法将编码整个url,而第二个方法将只编码url的路径。
选一个适合你的。

相关问题