【问题标题】:Chaning JSoup Standard Charset更改 JSoup 标准字符集
【发布时间】:2016-09-13 23:06:45
【问题描述】:

晚上好,

我目前正在使用 JSoup 处理我的 HTTP-Connection 内容,但遇到了我尝试与之交互的服务器不支持 ISO-8859-1 以外的其他字符集的问题。

根据我在 Internet 和 JSoup 源中收集到的信息,JSoup 仅支持所有请求的 UTF-8。

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

将此字符串更改为 ISO-8859-1 是否会更改所有请求编码,或者是否有我没有找到的问题(理解 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();

除了变音符号“öÖäÄüÜ”之外,一切都很好。

【问题讨论】:

  • 请包含您当前使用的代码。
  • @MattBall 我不明白你的问题。这是一个关于JSoup Source Code的问题,可以从他们的网站下载(最新版本)。
  • 如何尝试使用 JSoup 从该服务器获取数据?
  • @MattBall 嗯,添加了请求的代码。
  • 为什么不能将Content-Type 标头从charset=UTF-8 更改为charset=ISO-8859-1? JSoup 源代码明确表示默认字符集是 "// 如果在 header 或 meta charset 中找不到则使用"

标签: jsoup


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2014-07-24
    • 2012-09-13
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多