openoffice转换乱码

359 阅读1分钟

因第一次遇到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;
    }
}

网上找的不一定是刚好自己的问题,盲目相信可能被带的越来越远。