You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jsoup中获取正确的Windows-1252编码以处理特殊字符Token?

解决Jsoup获取Windows-1252编码Token时特殊字符丢失的问题

核心问题在于Jsoup默认的字符集检测可能忽略了Windows-1252编码,导致0x9D这类特殊控制字符被错误解析或丢失。Chrome元素检查能正常处理是因为它自动将Windows-1252的控制字符映射为对应的Unicode可见字符,手动复制时已经完成这个映射,所以提交有效。以下是具体解决方案:

1. 先获取原始字节流再手动解码

绕过Jsoup的自动字符集检测,直接获取页面原始字节,用Windows-1252编码解码后再交给Jsoup解析:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class TokenFetcher {
    public static void main(String[] args) throws Exception {
        URL targetUrl = new URL("你的目标页面URL");
        HttpURLConnection conn = (HttpURLConnection) targetUrl.openConnection();
        conn.setRequestMethod("GET");

        // 获取原始字节数据
        InputStream inputStream = conn.getInputStream();
        byte[] rawBytes = inputStream.readAllBytes();
        inputStream.close();

        // 用Windows-1252编码解码成字符串
        String decodedHtml = new String(rawBytes, "Windows-1252");

        // 解析处理后的HTML
        Document doc = Jsoup.parse(decodedHtml);
        // 提取Token
        String token = doc.select("input[name=你的Token参数名]").val();
    }
}

2. 强制Jsoup使用Windows-1252解析响应

如果要直接用Jsoup的连接方法,需显式指定解析字符集,避免自动检测出错:

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class TokenFetcher {
    public static void main(String[] args) throws Exception {
        Connection conn = Jsoup.connect("你的目标页面URL");
        Connection.Response response = conn.execute();

        // 强制用Windows-1252解析响应流
        Document doc = Jsoup.parse(response.bodyStream(), "Windows-1252", response.url().toString());
        String token = doc.select("input[name=你的Token参数名]").val();
    }
}

3. 验证Token的字符完整性

提取Token后,可以打印字符的十六进制值,确认0x9D对应的Unicode字符(U+201D)是否存在:

for (char c : token.toCharArray()) {
    System.out.printf("%04X ", (int) c);
}

如果输出中包含201D,说明字符已正确保留,此时提交POST请求直接使用该Token即可。

内容的提问来源于stack exchange,提问作者GabrielH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 03:39:25