3
回答
java zip压缩txt后换行错乱问题
目前的开发中遇到需要将生产的txt报告文件进行zip压缩加密的操作。在windows下压缩后再解压,文本文件仍然可正常阅读,排列无错乱,但是把程序放到Aix 5.3上运行,生成的txt也是正常的,但是从压缩包里解压出压缩文件时,解压出来的文本文件的排列就乱了。txt是按GBK编码输出的。很不明白为什么在windows下能正常运行的,到了aix上就有问题了,已经设置了系统的默认编码集为GBK的还是不行。
下面是设置的参数
// 设置java虚拟机参数
System.setProperty("file.encoding", "GBK");
System.setProperty("sun.jnu.encoding", "GBK");
System.setProperty("user.language", "zh");
System.setProperty("ibm.system.encoding", "GBK");
System.setProperty("sun.io.unicode.encoding", "UnicodeLittle");
System.setProperty("encoding", "GBK");
System.setProperty("user.country", "CN");
System.setProperty("java.awt.printerjob", "sun.awt.windows.WPrinterJob");
下面这个是压缩前生成的正常可阅读的文件。


下面这个便是经过zip压缩加密后,再解压出来的文件,排列完全错乱了。

这两个文件在UE下显示的都同为UNIX格式。
希望高手能帮忙解决下,在线等,谢谢!
举报
bais2244
发帖于5年前 3回/486阅
共有3个答案 最后回答: 5年前
txt 是不是在机器上动态生成的 应该是Linux和windows的换行符不同
--- 共有 2 条评论 ---
bais2244文件的生成和压缩都是在aix系统上进行的。 5年前 回复
bais2244文件是动态输出的。过程是先输出文件,再对文件进行压缩,压缩前的文件是可以正常阅读,换行也没有问题,经过ZipOutputStream压缩后,再解压出来就出现了上面的问题! 5年前 回复
感谢各位的支持,已经解决了!问题出在自动换行println上,不清楚为什么,println输出的文件是可以正常阅读的,但是zip打包后再解压出来,换行就乱了。今天试着把自动换行改为手动换行print+“\r\n”,问题就解决了,真的很不明白其中的原理!
顶部