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

因为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打开不会出现乱码且生僻字也能显示出来。

你可能感兴趣的:(编程语言学习)