某文件夹压缩成zip,繁体系统下载时压缩包内的中文文件名乱码

时间:2021-05-13 10:05:33
某文件夹压缩成zip,繁体系统下载时压缩包内的中文文件名乱码
简体系统是正常的

        String dirPath = "/temp/test";
        String zipFilePath = "/temp/test.zip";
        File srcdir = new File(dirPath);
        Project prj = new Project();
        Zip zip = new Zip();
        zip.setEncoding("GBK"); // 针对繁体系统用“GBK”或“BIG5”都会乱码
        zip.setProject(prj);
        zip.setDestFile(new File(zipFilePath));
        FileSet fileSet = new FileSet();
        fileSet.setProject(prj);
        fileSet.setDir(srcdir);
        zip.addFileset(fileSet);
        zip.execute();

19 个解决方案

#1


有谁做过压缩zip提供下载的

#2


不知道用utf-8试试

#3


引用 2 楼 blazingfire 的回复:
不知道用utf-8试试



UTF-8不是万能编码么?不知道能不能处理繁体啊......

#4


引用 1 楼 flyrain2012 的回复:
有谁做过压缩zip提供下载的


我用过ant.jar下zipOutputStream,设置gbk不会乱码。

#5


简体系统用GBK中文正常显示,但繁体系统下用GBK或BIG5都不行

#6


引用楼主 flyrain2012 的回复:
zip.setEncoding("GBK"); // 针对繁体系统用“GBK”或“BIG5”都会乱码

你指定这个当然没用。问题是你的文件名本身。把它的名称用BIG5对应的汉字代替才行。

#7


引用 6 楼 theforever 的回复:
引用楼主 flyrain2012 的回复:
zip.setEncoding("GBK"); // 针对繁体系统用“GBK”或“BIG5”都会乱码

你指定这个当然没用。问题是你的文件名本身。把它的名称用BIG5对应的汉字代替才行。


能给个方案不

#8


亏你还引用,我那不是已经给了解决方案了吗。

#9


还是没解决,再顶一次

#10


请这样做
1. 在TOMCAT/CONF下的STRUTS.XML将CONNECTOR的URIENCODING设置为UTF-8
2. 页面编码,返回数据流CONTENTENCODING设置为UTF-8
3. 浏览器编码设置为UTF-8
4. OS系统区域语言设置/进阶设置为中国PRC(针对*香港繁体中文)
5. 请传输中文时用POST,JSP页面直接传中文没问题
6. SERVER端处理时可以正常接收中文,但是回传数据流时(例如下载)请用new String(fileName.getBytes("UTF-8"), "ISO-8859-1");ServletActionContext.getResponse().setCharacterEncoding("UTF-8");

#11


引用 10 楼 getserved 的回复:
请这样做
1. 在TOMCAT/CONF下的STRUTS.XML将CONNECTOR的URIENCODING设置为UTF-8
2. 页面编码,返回数据流CONTENTENCODING设置为UTF-8
3. 浏览器编码设置为UTF-8
4. OS系统区域语言设置/进阶设置为中国PRC(针对*香港繁体中文)
5. 请传输中文时用POST,JSP页面直接传中文没问题
6. SERVER端……


下载名没啥问题,是zip中的文件的文件名在繁体系统会乱码

#12


该回复于2010-12-09 10:07:34被版主删除

#13


该回复于2010-12-14 11:16:39被版主删除

#14


繁體系統比較麻煩,因為系統字符集不一樣,你可以獲取系統字符集后再轉,另外你是說你SERVER是繁體還是用戶是繁體啊

#15


引用 5 楼 flyrain2012 的回复:
简体系统用GBK中文正常显示,但繁体系统下用GBK或BIG5都不行

繁体系统要安装gb2312的编码支持,这样才可以显示,不是压缩的问题 。

#16


该回复于2010-12-14 16:14:23被版主删除

#17


该回复于2010-12-14 17:42:00被版主删除

#18


引用 14 楼 getserved 的回复:
繁體系統比較麻煩,因為系統字符集不一樣,你可以獲取系統字符集后再轉,另外你是說你SERVER是繁體還是用戶是繁體啊


用户的是繁体系统

#19


还没解决,送分

#1


有谁做过压缩zip提供下载的

#2


不知道用utf-8试试

#3


引用 2 楼 blazingfire 的回复:
不知道用utf-8试试



UTF-8不是万能编码么?不知道能不能处理繁体啊......

#4


引用 1 楼 flyrain2012 的回复:
有谁做过压缩zip提供下载的


我用过ant.jar下zipOutputStream,设置gbk不会乱码。

#5


简体系统用GBK中文正常显示,但繁体系统下用GBK或BIG5都不行

#6


引用楼主 flyrain2012 的回复:
zip.setEncoding("GBK"); // 针对繁体系统用“GBK”或“BIG5”都会乱码

你指定这个当然没用。问题是你的文件名本身。把它的名称用BIG5对应的汉字代替才行。

#7


引用 6 楼 theforever 的回复:
引用楼主 flyrain2012 的回复:
zip.setEncoding("GBK"); // 针对繁体系统用“GBK”或“BIG5”都会乱码

你指定这个当然没用。问题是你的文件名本身。把它的名称用BIG5对应的汉字代替才行。


能给个方案不

#8


亏你还引用,我那不是已经给了解决方案了吗。

#9


还是没解决,再顶一次

#10


请这样做
1. 在TOMCAT/CONF下的STRUTS.XML将CONNECTOR的URIENCODING设置为UTF-8
2. 页面编码,返回数据流CONTENTENCODING设置为UTF-8
3. 浏览器编码设置为UTF-8
4. OS系统区域语言设置/进阶设置为中国PRC(针对*香港繁体中文)
5. 请传输中文时用POST,JSP页面直接传中文没问题
6. SERVER端处理时可以正常接收中文,但是回传数据流时(例如下载)请用new String(fileName.getBytes("UTF-8"), "ISO-8859-1");ServletActionContext.getResponse().setCharacterEncoding("UTF-8");

#11


引用 10 楼 getserved 的回复:
请这样做
1. 在TOMCAT/CONF下的STRUTS.XML将CONNECTOR的URIENCODING设置为UTF-8
2. 页面编码,返回数据流CONTENTENCODING设置为UTF-8
3. 浏览器编码设置为UTF-8
4. OS系统区域语言设置/进阶设置为中国PRC(针对*香港繁体中文)
5. 请传输中文时用POST,JSP页面直接传中文没问题
6. SERVER端……


下载名没啥问题,是zip中的文件的文件名在繁体系统会乱码

#12


该回复于2010-12-09 10:07:34被版主删除

#13


该回复于2010-12-14 11:16:39被版主删除

#14


繁體系統比較麻煩,因為系統字符集不一樣,你可以獲取系統字符集后再轉,另外你是說你SERVER是繁體還是用戶是繁體啊

#15


引用 5 楼 flyrain2012 的回复:
简体系统用GBK中文正常显示,但繁体系统下用GBK或BIG5都不行

繁体系统要安装gb2312的编码支持,这样才可以显示,不是压缩的问题 。

#16


该回复于2010-12-14 16:14:23被版主删除

#17


该回复于2010-12-14 17:42:00被版主删除

#18


引用 14 楼 getserved 的回复:
繁體系統比較麻煩,因為系統字符集不一樣,你可以獲取系統字符集后再轉,另外你是說你SERVER是繁體還是用戶是繁體啊


用户的是繁体系统

#19


还没解决,送分

#20