在這里,介紹一種解決抓取后網(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(); /** 頁面源文件 */ 問題解決,^_^。這里的CHARSET要根據(jù)實(shí)際情況設(shè)置 |
|