Jsoup Connect не работает правильно, когда ссылка содержит турецкие буквы
Я использую Jsoup
чтобы получить HTML с веб-сайтов. я использую
String url="http://www.example.com";
Document doc=Jsoup.connect(url).get();
этот код, чтобы получить HTML. Но когда я использую некоторые турецкие буквы в ссылке, как это;
String url="http://www.example.com/?q=Türkçe";
Document doc=Jsoup.connect(url).get();
Jsoup отправляет запрос так: "http://www.example.com/?q=Trke"
Поэтому я не могу получить правильный результат. Как я могу решить эту проблему?
3 ответа
Рабочее решение, если кодировка UTF-8
тогда просто используйте
Document document = Jsoup.connect("http://www.example.com")
.data("q", "Türkçe")
.get();
с результатом
URL=http://www.example.com?q=T%C3%BCrk%C3%A7e
Для пользовательского кодирования это может быть использовано:
String encodedUrl = URLEncoder.encode("http://www.example.com/q=Türkçe", "ISO-8859-3");
String encodedBaseUrl = URLEncoder.encode("http://www.example.com/q=", "ISO-8859-3");
String query = encodedUrl.replace(encodedBaseUrl, "");
Document doc= Jsoup.connect("http://www.example.com")
.data("q", query)
.get();
Символы Unicode не разрешены в URL согласно спецификации. Мы привыкли их видеть, потому что браузеры отображают их в адресной строке, но они не отправляются на серверы.
Вы должны URL кодировать свой путь, прежде чем передать его JSoup
, Jsoup.connect("http://www.example.com").data("q", "Türkçe")
как предложено MariuszS делает именно это
Я нашел это в Google: http://turkishbasics.com/resources/turkish-characters-html-codes.php Может быть, вы можете добавить его так:
String url="http://www.example.com/?q=Türkçe";
Document doc=Jsoup.connect(url).get();