Необходимо использовать кодировку 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 ответа:
Форма
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");