2014-01-15 2 views
6

Я использую Jsoup, чтобы получить html с веб-сайтов. Я используюJsoup connect работает неправильно, когда ссылка имеет турецкие буквы

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"

Так что я не могу получить правильный результат. Как я могу решить эту проблему?

ответ

5

Рабочий раствор, если кодирование 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(); 
+1

Да второй работает! Спасибо –

+0

@ ErdinçÖzdemir Извините, я испортил свой пост, который работает :) – MariuszS

+1

Кодирование UTF-8. Еще второй - это истинный ответ. –

1

Я нашел это на 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(); 
+0

Да, я попробовал это раньше. Но это не сработает. String url = "http://www.example.com/?q=Türkçe"; когда я это сена. Он отправляется как String url = "http://www.example.com/?q=T"; –

+2

Извините, это была моя единственная идея :) – Fraggles

2

Unicode символы не допускаются в URL, как на the specification. Мы привыкли их видеть, потому что браузеры отображают их в адресных барах, но они не отправляются на серверы.

У вас есть URL-адрес, кодирующий ваш путь, прежде чем передавать его на JSoup. Jsoup.connect("http://www.example.com").data("q", "Türkçe") как предложено MariuszS делает только это

Смежные вопросы