因第一次遇到openoffice转化Word乱码时,有点懵。 我自己的电脑是Mac,之前同事电脑是win,一样的代码,一样的入参文档,win的可以。 因为openoffice接触的比较少,先搜索了一下,看了2页搜索结果都说Linux确实win的字体, 如这篇文章, 还终极解决方案试了不行,还以为字体太少,在win下拷贝过去还是不行。 和同事讨论了一下,乱码一般都是编码问题,有点道理,比较之前也遇到过,比如链接数据库时配置的编码、多年前Tomcat配置文件。找到转换的地方,代码是其他同事写的,把编码写死了UTF-8,时了一波,OK! 读取文件编码是这块代码,读取返回的是GBK,只能说在Linux上不凑效了。
public class FileCharsetUtil {
public static String codeString(File file) throws IOException {
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(file));
int p = (bin.read() << 8) + bin.read();
bin.close();
String code = null;
switch (p) {
case 0xefbb:
code = "UTF-8";
break;
case 0xfffe:
code = "Unicode";
break;
case 0xfeff:
code = "UTF-16BE";
break;
default:
code = "GBK";
}
return code;
}
}
网上找的不一定是刚好自己的问题,盲目相信可能被带的越来越远。