代碼如下
其中responseString是通過(guò)HttpClient返回的HTML頁(yè)面內(nèi)容,包含中文,UTF-8,在log中顯示正常;
這段代碼在一個(gè)Web應(yīng)用中被執(zhí)行。
1, 當(dāng)我直接在eclipse,把Web應(yīng)用放tomcat里運(yùn)行時(shí),兩次trace打印出來(lái)的內(nèi)容都能正常顯示中文內(nèi)容;
2, 當(dāng)我把Web應(yīng)用打成war包,入到服務(wù)器(其實(shí)就是我的電腦本機(jī),脫離eclipse)運(yùn)行時(shí),兩次trace,第一次打印出來(lái)的中文正常顯示,但第二次卻是亂碼。
所以我覺(jué)得很詭異,同樣的一段代碼,在不同的方式運(yùn)行出不同的結(jié)果。不知道是不是JTidy會(huì)依賴(lài)什么環(huán)境變量?
我用的是:eclipse?Helios Service Release 1, tomcat 7(與這個(gè)無(wú)關(guān),我也試過(guò)6),操作系統(tǒng)是Win7 英文。
百思不得其解,救解!
ByteArrayInputStream in = null; try { in = new ByteArrayInputStream(responseString.getBytes()); logger.trace("@@@@@@@ ByteArrayInputStream -> \n\n" + responseString + "\n\n"); Tidy tidy = new Tidy(); tidy.setQuiet(true); tidy.setShowWarnings(false); tidy.setInputEncoding("UTF-8"); org.w3c.dom.Document dom = tidy.parseDOM(in, null); Document doc = new DOMReader().read(dom); logger.trace("@@@@@@@ SAXReader -> \n\n" + doc.asXML() + "\n\n"); } finally { try { in.close(); } catch (IOException ignore) { } }
JTidy 解析 HTML 中文 亂碼問(wèn)題
慕的地8271018
2018-12-07 04:08:48