项目中有使用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())前面就可以在页面上显示正常的文字了。