Java使用Jacob转换Word为HTML 中文乱码

做项目时遇到要把word文档显示在网页上,因为只有一个显示的小功能,所以就没有用pageoffice,而是选用了jacob把word文档转为html格式,直接嵌套在jsp页面上,但是遇到一个问题,就是jacob转换时默认编码格式是gb2312,显示在jsp里面就变成乱码了,捣鼓了挺久,试了很多办法都不行,终于想到一个办法,就是直接把html里面的gb2312格式替换成utf-8,在网上找了一段代码替换html文件的字符串的,但是只是‘纯粹替换字符串的话还不行,还要注意解码和编码时的格式问题,以下是源代码,其中红色标记是关键



public static void html2utf(String filePath) {
try {


String content = "charset=utf-8";
String templateContent = "";
FileInputStream fileinputstream = new FileInputStream(filePath);// 读取模板文件
// 下面四行:获得输入流的长度,然后建一个该长度的数组,然后把输入流中的数据以字节的形式读入到数组中,然后关闭流
int lenght = fileinputstream.available();
byte bytes[] = new byte[lenght];
fileinputstream.read(bytes);
fileinputstream.close();
// 通过使用默认字符集解码指定的 byte 数组,构造一个新的
//因为原来的html文件是gb2312格式,所以转为string时也要以GBK格式读取,不然依旧是乱码
templateContent = new String(bytes, "GBK");
templateContent = templateContent.replaceFirst("charset=gb2312", content);
// 因为已经替换字符串了,所以使用UTF-8字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
byte tag_bytes[] = templateContent.getBytes("UTF-8");
FileOutputStream fileoutputstream = new FileOutputStream(filePath);// 建立文件输出流
fileoutputstream.write(tag_bytes);
fileoutputstream.close();


} catch (Exception e) {
System.out.print(e.toString());
}


}

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值