6

我正在使用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"

所以我无法得到正确的结果。我怎么解决这个问题?

4

3 回答 3

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();
于 2014-01-15T09:12:46.817 回答
2

根据规范,URL 中不允许使用 Unicode 字符。我们习惯于看到它们,因为浏览器会在地址栏中显示它们,但它们不会发送到服务器。

在将路径传递给JSoup. Jsoup.connect("http://www.example.com").data("q", "Türkçe")正如 MariuszS 所提议的那样

于 2014-01-15T09:32:10.503 回答
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();
于 2014-01-15T08:55:07.793 回答