doc轉html在tomcat8下亂碼
阿新 • • 發佈:2019-02-04
專案中有使用WordToHtmlConverter將word文件轉成HTML頁面的功能,在tomcat6中執行沒有問題,最近遷移到tomcat8後出現了亂碼問題,docx正常但是doc文件轉html會出現亂碼。
使用sublimetext直接開啟生成的jsp頁面是亂碼的但是裝上ConvertToUTF8外掛是可以轉成正常文字的
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
serializer.setOutputProperty (OutputKeys.ENCODING, "GB2312");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
serializer.transform(domSource, streamResult);
out.close();
writeFile(new String(out.toByteArray()), outPutFile);
File file = new File(path);
fos = new FileOutputStream(file);
bw = new BufferedWriter(new OutputStreamWriter(fos,"GB2312"));
測試將上面兩處設計字元編碼的地方都修改成utf-8,生成的檔案亂碼並且無法轉成正常文字,推測doc文件轉html程式碼後預設使用GB2312,為什麼在執行後的頁面上顯示亂碼還不知道,但是發現轉換成的jsp頁面頭部少一行程式碼:
<%@ page language='java' contentType='text/html; charset=GB2312' pageEncoding='utf-8'%>
於是在寫檔案之前將這行程式碼加在new String(out.toByteArray())前面就可以在頁面上顯示正常的文字了。