1

我尝试在Big5中使用发布数据并得到类似的结果:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="zh-TW">

java语句如下:

Document docs = Jsoup.connect(param)
                     .timeout(30000)
                     .postDataCharset("Big5")
                     .data("syear","104")
                     .data("smonth","6")
                     .data("sday","30")
                     .data("eyear","104")
                     .data("emonth","7")
                     .data("eday","17")
                     .data("SectNO", "不限科別")
                     .data("EmpNO", "不限醫生")
                     .post();

如何设置用于发送数据以获得响应的字符集?

4

1 回答 1

0

解释

从 Jsoup 1.8.3 开始,设置postedpostDataCharset()数据的字符集。在解析读取的数据时,不会重用此字符集。

相反,Jsoup 试图以某种方式找到指定字符集的元 http-equiv。如果找不到,默认情况下假定字符集是 UTF-8。在你的情况下,这个假设是错误的。

解决方法

要解决此问题,请不要让 Jsoup为您猜测数据编码。这是如何做到的:

// Let Jsoup fetch the data
Response res = Jsoup.connect(param)         //
                 .timeout(30000)            //
                 .postDataCharset("Big5")   //
                 .data("syear", "104")      //
                 .data("smonth", "6")       //
                 .data("sday", "30")        //
                 .data("eyear", "104")      //
                 .data("emonth", "7")       //
                 .data("eday", "17")        //
                 .data("SectNO", "不限科別") //
                 .data("EmpNO", "不限醫生")  //
                 .execute();

// Now, we tell it explicitly which encoding to use
Document docs = Jsoup.parse(
                 new String(res.bodyAsBytes(), "Big5"), //
                 param //
);
于 2016-01-29T09:59:53.093 回答