Необходимо использовать кодировку Url UTF-16 для отправки поиска на Java. Как я могу?


Определенный сайт (который не находится под моим контролем) имеет внутреннюю поисковую систему, которая использует запросы GET, которые выглядят так: something.com/search?query=%u0001%0101, которые я хотел бы использовать в своем коде Java .

Насколько я понимаю, это не очень распространенный способ (UTF-16) кодирования Url. Я попытался использовать HttpURLConnection с Url-адресом указанного выше типа, но это выбрасывает мне java.net.URISyntaxException Malformed escape pair at index X (X-позиция %u0001).

Что я могу сделать? Я довольно новичок в этих вопросах кодирования url, поэтому любой совет был бы очень полезен. оцененный.

2 3

2 ответа:

Форма something.com/search?query=%u0001%0101 нарушает спецификацию URI, поскольку процентные символы зарезервированы дляпроцентного кодирования . Согласно этому правилу, за символом процента должны следовать две шестнадцатеричные цифры. Это не допустимый URI в кодировке UTF-16.

Неудивительно, что по этим адресам выбрасываются ошибки.

Возможно, вам придется прибегнуть к открытию сокета и отправке собственного искаженного запроса клиента .

GET /search?query=%u0001%0101 HTTP/1.1
Host: something.com

Вы можете использовать java.net.URLEncoder.encode("you string", "UTF-16");