代碼如下
其中responseString是通過HttpClient返回的HTML頁面內容,包含中文,UTF-8,在log中顯示正常;
這段代碼在一個Web應用中被執行。
1, 當我直接在eclipse,把Web應用放tomcat里運行時,兩次trace打印出來的內容都能正常顯示中文內容;
2, 當我把Web應用打成war包,入到服務器(其實就是我的電腦本機,脫離eclipse)運行時,兩次trace,第一次打印出來的中文正常顯示,但第二次卻是亂碼。
所以我覺得很詭異,同樣的一段代碼,在不同的方式運行出不同的結果。不知道是不是JTidy會依賴什么環境變量?
我用的是:eclipse?Helios Service Release 1, tomcat 7(與這個無關,我也試過6),操作系統是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 中文 亂碼問題
慕的地8271018
2018-12-07 04:08:48