ZipFile读Excel文件,汉字是乱码,请教有办法解决吗?谢谢

oracleperl 2021-07-05 10:26:35

Charset charset = Charset.forName("utf-8");
ZipInputStream zin = new ZipInputStream(in,charset);

这样读取XLSX文件时,汉字是乱码

    public static void main(String[] args) throws IOException {
        String path = "E:\\study.xlsx";
        ZipFile zf = new ZipFile(path);
        InputStream in = new BufferedInputStream(new FileInputStream(path));
        //Charset gbk = Charset.forName("gbk");
        //ZipInputStream zin = new ZipInputStream(in,gbk);
        Charset gbk = Charset.forName("utf-8");
        ZipInputStream zin = new ZipInputStream(in,gbk);
        //ZipInputStream zin = new ZipInputStream(in);
        ZipEntry ze;
        String v_fileou="out.txt";
        //BufferedWriter br_writer=new BufferedWriter(new FileWriter(v_fileou,true),1048576);
        BufferedWriter br_writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(v_fileou)),"utf-8"));
        while((ze = zin.getNextEntry()) != null)
        {
            System.out.println(ze.toString());
            //if(ze.toString().endsWith("xml"))
            if (ze.toString().equals("xl/sharedStrings.xml"))
            {
                BufferedReader br = new BufferedReader(new InputStreamReader(zf.getInputStream(ze),"GBK"));
                String line;
                while((line = br.readLine()) != null){
                    br_writer.write(line);
                    System.out.println(line.toString());
                }
                br.close();
            }
            System.out.println();
        }
        zin.closeEntry();
                      br_writer.flush();
                  br_writer.close();
    }
}

...全文
431 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-IT工具 发布问题, 以便更快地解决您的疑问

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧