2014-01-15 41 views
6

我正在使用Jsoup從網站獲取html。我正在使用當鏈接有土耳其字母時,Jsoup連接無法正常工作

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

我發現這對谷歌: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字符沒有在網址作爲每the specification允許的。我們習慣看到它們,因爲瀏覽器將它們顯示在地址欄中,但它們不會發送到服務器。

在將它傳遞到JSoup之前,您必須對您的路徑進行網址編碼。 Jsoup.connect("http://www.example.com").data("q", "Türkçe")正如MariuszS所建議的那樣