如何设置Jsoup读取的数据编码?

时间:2015-06-29 21:05:39

标签: java character-encoding jsoup big5

我尝试在Big5中使用帖子数据并获得类似内容:

//app is a valid reference to a Microsoft.Office.Interop.Excel.Application instance
app.ActiveWindow.ScrollRow++;

java语句如下:

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

如何设置charset以发送数据以获得响应?

1 个答案:

答案 0 :(得分:0)

阐释

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

相反,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 //
);