导出为csv文件时的各种中文问题汇总

本文讨论了使用Java处理CSV文件时遇到的问题,包括中文文件名乱码、编码选择不当导致的乱码和生僻字显示问题,并提供了解决方案。重点介绍了如何使用ant.jar下的ZipOutputStream解决中文文件名乱码问题,以及设置CSV文件编码为gbk以避免乱码和正确显示生僻字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为csv文件短小精悍占用内存小且可以用excel打开等优点,现在很多的导出都不用poi来做而是导出为csv的纯文本,这样当数据量比较大的时候能大大减小内存消耗,但同时又有如下几个问题值得探讨:

1、用java.util.zip包下面的工具类去导出为包含多个文件的zip包时,zip包里面的中文文件名会出现乱码的情况且会出现无法用excel打开的情况。这个问题可以用ant.jar下面的ZipOutputStream来解决,因为ant下面的工具类在编码上是做了优化的。

2、当导出为csv的时候,编码的选择不当会出现两种情况:情况一是用记事本等纯文本编辑器打开的时候编码正常但用excel打开之后会出现乱码;情况二是大多数情况用记事本和excel打开都没问题,但是少数生僻字会显示为乱码或者'?'。可能直接的一个想法是设置编码为utf-8,但是因为csv本身是纯文本的,不带编码信息,而当试图用excel来打开的时候,excel看不到编码信息,就会用默认的编码来打开这个csv文件,而往往这样就会出现乱码。解决的办法是设置为gbk,有两个原因:一个是gbk编码范围也十分广,基本包括了所有的中文汉字,还有一个gbk的csv文件用excel打开不会出现乱码且生僻字也能显示出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值