2014-01-15 7 views
6

Ich verwende Jsoup, um HTML von Websites zu erhalten. Ich benutzeJsoup connect funktioniert nicht korrekt, wenn Link türkische Buchstaben hat

String url="http://www.example.com"; 
Document doc=Jsoup.connect(url).get(); 

diesen Code, um HTML zu bekommen. Aber wenn ich einige türkische Buchstaben in der Verbindung verwende,

String url="http://www.example.com/?q=Türkçe"; 
Document doc=Jsoup.connect(url).get(); 

Jsoup sendet die Anfrage wie folgt aus: "http://www.example.com/?q=Trke"

So kann ich nicht das richtige Ergebnis bekommen. Wie kann ich dieses Problem lösen?

Antwort

5

Arbeitslösung, wenn Codierung UTF-8 einfach

dann verwenden
Document document = Jsoup.connect("http://www.example.com") 
     .data("q", "Türkçe") 
     .get(); 

mit

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

Ja, zweitens funktioniert! Danke –

+0

@ ErdinçÖzdemir Sorry, ich habe meinen Beitrag vermasselt, welcher funktioniert :) – MariuszS

+1

Codierung ist UTF-8. Noch zweiter ist die wahre Antwort. –

1

fand ich diese auf Google: http://turkishbasics.com/resources/turkish-characters-html-codes.php Vielleicht es so u kann hinzufügen:

String url="http://www.example.com/?q=Türk&#231e"; 
Document doc=Jsoup.connect(url).get(); 
+0

Ja, ich habe es vorher versucht. Aber es funktioniert nicht. String url = "http://www.example.com/?q=Türkçe"; wenn ich das mache. Er sendet als String url = "http://www.example.com/?q=T"; –

+2

Sorry, das war meine einzige Idee :) – Fraggles

2

Unicode-Zeichen sind nicht in URLs als pro the specification erlaubt:Für benutzerdefinierte Codierung kann diese verwendet werden. Wir sind es gewohnt, sie zu sehen, weil Browser sie in Adressleisten anzeigen, aber sie werden nicht an Server gesendet.

Sie müssen den Pfad vor der Übergabe an JSoup URL-codieren. Jsoup.connect("http://www.example.com").data("q", "Türkçe") wie von MariuszS vorgeschlagen tut dies nur

Verwandte Themen