日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用HttpClient+Regex抓取第三方網(wǎng)站信息(三)

 hailong_qin 2011-07-17

在這里,介紹一種解決抓取后網(wǎng)頁內(nèi)容顯示為亂碼的辦法。

前幾天,在抓取某網(wǎng)站的信息時(shí)(http://www./Price/Price/Default.aspx),第一次碰到了這種應(yīng)用下的亂碼問題。于是上網(wǎng)查了一下,提供的解決辦法大致有兩種:

1>  private static final String CONTENT_CHARSET = "GBK";

 httpClient.getParams().setContentCharset("UTF-8");

 or

 httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, CONTENT_CHARSET);

2>  private static final String CONTENTTYPE = " text/html; charset=GBK";

  getMethod.setRequestHeader("Content-Type", CONTENTTYPE);

測試了,沒有任何效果(換成UTF-8也不行)。也用了String result = new String(pageSrc.getBytes("UTF-8"),"GBK"),依然無效。

在焦頭爛額時(shí)想到了以前在學(xué)校時(shí)經(jīng)常用的一句話:找問題要會(huì)追根溯源。仔細(xì)想想,字符串里面的文本內(nèi)容也是通過文件流獲取的,既然轉(zhuǎn)換字符串字符編碼不起作用,那可以設(shè)置文件流的默認(rèn)編碼嗎?查了jdk,是可行的。

private static final String CHARSET = "UTF-8";

InputStream ins = getMethod.getResponseBodyAsStream();

//按指定的字符集構(gòu)建文件流
BufferedReader br = new BufferedReader(new InputStreamReader(ins,CHARSET));
StringBuffer sbf = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null)
{
sbf.append(line);
}
/** 回收資源 */
br.close();
getMethod.releaseConnection();

/** 頁面源文件 */
pageSource = sbf.toString();

問題解決,^_^。這里的CHARSET要根據(jù)實(shí)際情況設(shè)置

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多