Uri.encode () кодирует неправильно - PullRequest
0 голосов
/ 25 июня 2018

Итак, мне нужно закодировать мой URL.Для этого я использую Uri.encode():

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

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

Но это странно кодирует ... [ это %255B, когда это должно быть, и ] это %255D, когда это должно быть%5D

Обновление: Оказывается, Uri.encode() работает просто отлично.Проблема в том, как я строю URL.Я делаю это с помощью HttpUrl и после кодирования query я делаю HttpUrl.build(), который кодирует URL во второй раз?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вы, кажется, звоните android.net.Uri's:

public static String encode (String s, String allow)

Из документации это:

Кодирует символы в данной строке как «%» - экранированные октеты с использованием Схема UTF-8. Оставляет буквы («A-Z», «a-z»), цифры («0-9») и незарезервированные символы ("_-!. ~ '() *") без изменений. Кодирует все остальное символы за исключением тех, которые указаны в разрешении аргумент.

Так что вам нужно передать строку URL в качестве параметра s. И он вернет закодированную версию URL, подходящую для использования в качестве компонента URI.

0 голосов
/ 25 июня 2018

URLEncoder.encode (запрос, "UTF-8");

Кодировка URL может быть Кодировка процента , которая кодируется с%.Предоставьте "UTF-8" в символах, это будет работать.Надеюсь, это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...