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&#231e", "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&#231e";
 Document doc=Jsoup.connect(url).get();
Другие вопросы по тегам