Uri.encode()编码错误

时间:2018-06-25 13:15:41

标签: android kotlin encode

因此,我需要对我的网址进行编码。 为此,我使用Uri.encode()

private const val CHARS= "@#&=*+-_.,:!?()/~'%"

if (query != null) {
     query = Uri.encode(query, Chars)
}

但是,它怪异地编码... [%255B,应该是]%255D%5D,< / p>

更新:事实证明Uri.encode()可以正常工作。问题是我如何建立网址。我通过使用HttpUrl来做到这一点,并且在对query进行编码后,我做了HttpUrl.build(),它第二次对网址进行了编码?

2 个答案:

答案 0 :(得分:0)

URLEncoder.encode(query,“ UTF-8”);

URL编码可以是Percent-encoding,它用%编码。以字符形式提供“ UTF-8”,它将起作用。希望这对您有用。

答案 1 :(得分:0)

您似乎正在呼叫android.net.Uri:

public static String encode (String s, String allow)

在文档中,这是

  

使用,将给定字符串中的字符编码为'%'转义的八位字节。   UTF-8方案。留下字母(“ A-Z”,“ a-z”),数字(“ 0-9”)和   未保留的字符(“ _- !.〜'()*”)保持不变。编码所有其他   字符(允许中指定的字符除外)   论点。

因此,您需要传递URL字符串作为s参数。它将返回适合用作URI组件的url的编码版本。