Jsoup.проблемы с кодировкой connect(string)

у меня есть несколько специальных символов url, к которым я должен подключиться с помощью Jsoup.connect (string), но не удается загрузить страницу (получение ошибки 500). Я не очень разбираюсь в URL и таких, но я думаю, что это имеет какое-то отношение к кодировке, используемой JSoup.connect

В любом случае, как я буду действовать, чтобы ссылки имели специальные символы, такие как: Æ Ø Å è etc, исключение, которое я получаю:

java.io.IOException: 500 error loading URL https://maps.googleapis.com/maps/api/place/textsearch/xml?query=Averøy%20restaurant%20og%20Pizzeria,%20Norge&sensor=false&key=xx&radius=10
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:414)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:391)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:157)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:146)
at HTMLParser.doParsing(HTMLParser.java:122)
at HTMLParser.initParser(HTMLParser.java:50)
at Main.main(Main.java:15)

код, который создает эту ошибку есть:

Document gDoc = Jsoup.connect(placesURL).get();

где строка placesURL:

https://maps.googleapis.com/maps/api/place/textsearch/xml?query=%s&sensor=false&key=XX&radius=10

У кого-нибудь есть идея обойти это?

спасибо!

2 ответов


столкнувшись с проблемами кодирования URL, я бы рекомендовал вам сначала проанализировать ваш запрос с помощью инструмента кодирования URL (StackOverflow ответ относительно тех). Один уже поставляется с Java.

URLEncoder.encode(stringToBeEncoded, "UTF-8") 

используя его на неформатированной строке выше, он должен выглядеть примерно так:

Document gDoc = JSoup.connect(placesURL.format(URLEncoder.encode(queryString, "UTF-8"));

... что касается не URL-кодирования всего URL-адреса, то только часть запроса должна быть совместима с UTF-8 (или UTF-16).


Как глупо с моей стороны, вместо того, чтобы просто кодировать строку запроса, я закодировал весь URL..

решается сделать это:

String placesUrl = String.format("https://maps.googleapis.com/maps/api/place/textsearch/xml?query=%s&sensor=false&key=XX&radius=10",URLEncoder.encode(restaurantListe[i][0],"UTF-8"));

Спасибо за помощь!