您的位置:首页 > 编程语言 > Java开发

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

2016-08-22 12:54 1161 查看
做项目时遇到要把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());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java utf-8 html 乱码