csv用ecxel打开乱码

最近开发导出报表要求导出csv格式,但是发现导出后用excel打开乱码。用notepad++打开发现编码格式是utf-8无bom格式,但是文件实际的数据后面有一行很长很长的null。经过debug也没发现生成的临时文件有乱码,最后将错误锁定在文件下载这一块。

原来的代码:

        FileInputStream fis = new FileInputStream(file);
        BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
        byte[] buffer = new byte[2048];
        while(( fis.read(buffer) != -1){
            bos.write(buffer);
        }

用notepad++打开看到的后面一长串的null是由于byte数组没用完导致的。excel默认采用的编码格式会把后面没用到的数组编码成别的字符,所以导致了乱码,虽然这个可以通过用记事本打开在存成ANSI格式或者在notepad++直接删除掉后面的null解决。但这并不是长久之计。目前我所想到的解决办法是讲后面的没用到的数组不要。只需要通过修改代码就能实现。

修改后的代码:
        byte[] buffer = new byte[2048];
        int readlength = 0;
        while((readlength = fis.read(buffer)) != -1){
            bos.write(buffer,0,readlength);
        }

之后我还会日常更新bug修复。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值