Chaning JSoup标准Charset

时间:2016-09-13 23:06:45

标签: jsoup

晚上好,

我目前正在使用JSoup处理我的HTTP-Connection内容,并且遇到了我尝试与之交互的服务器不支持其他Charsets而不是ISO-8859-1的问题。

从我在互联网和JSoup源中收集的内容来看,JSoup仅支持所有请求的UTF-8。

static final String defaultCharset = "UTF-8"; // used if not found in header or meta charset

将此String更改为ISO-8859-1是否会更改所有请求编码,或者是否有一个我没有找到的catch(了解JSoup源对我来说真的很难)?

以下是我目前用于将数据发布到服务器的代码:

Jsoup.connect(uploadsite).cookies(cookies)
            .header("Content-Type","application/x-www-form-urlencoded;charset=UTF-8")
            .data("Eintrag[]" , panel.teingangsdatum.getText(), "Ticket[]", panel.tticketnr.getText(),
            "DatumA[]", datumteile[2], "DatumB[]", datumteile[1], "DatumC[]", datumteile[0],
            "UhrzeitA[]", panel.tanfangsstunde.getText(), "UhrzeitB[]", panel.tanfangsminute.getText(),
            "UhrzeitC[]", panel.tendstunde.getText(), "UhrzeitD[]", panel.tendminute.getText(),
            "KundeA[]", kdname, "KundeB[]", panel.tkdnr.getText(), "HVT[]", 
            panel.thvt.getText(),
            "Techniker[]", "0", "Art[]", ticketart)
            .method(Method.POST)
            .execute();

除了变形金刚“öÖäÄüÜ”之外,一切都很好。

1 个答案:

答案 0 :(得分:1)

.postDataCharset("ISO-8859-1")添加到您的请求中(javadoc)。

示例:

application/x-www-form-urlencoded格式的字符串“ÄÖÜ-foobar”是

  • 采用UTF-8编码:%C3%84%C3%96%C3%9C-foobar
  • 采用ISO-8859-1编码:%C4%D6%DC-foobar

没有.postDataCharset("ISO-8859-1")服务器收到UTF-8编码的字符串:

%C3%84%C3%96%C3%9C-foobar

使用.postDataCharset("ISO-8859-1")服务器收到ISO-8859-1编码的字符串:

%C4%D6%DC-foobar