晚上好,
我目前正在使用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();
除了变形金刚“öÖäÄüÜ”之外,一切都很好。
答案 0 :(得分:1)
将.postDataCharset("ISO-8859-1")
添加到您的请求中(javadoc)。
示例:
application/x-www-form-urlencoded
格式的字符串“ÄÖÜ-foobar”是
%C3%84%C3%96%C3%9C-foobar
%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