因此,我需要对我的网址进行编码。
为此,我使用Uri.encode()
:
private const val CHARS= "@#&=*+-_.,:!?()/~'%"
if (query != null) {
query = Uri.encode(query, Chars)
}
但是,它怪异地编码... [
是%255B
,应该是]
,%255D
是%5D
,< / p>
更新:事实证明Uri.encode()
可以正常工作。问题是我如何建立网址。我通过使用HttpUrl
来做到这一点,并且在对query
进行编码后,我做了HttpUrl.build()
,它第二次对网址进行了编码?
答案 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的编码版本。