浏览 3477 次
锁定老帖子 主题:java解zip文件 字符集问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-09
引用
我们按照上面说的方法把ant的zip package摘出来,放到自己的工程里(apache就是牛,包结构分的特好,把这个包拿出来后都不需要在引其它包)。然后把解zip包的相关类改为自己导出来的类。这样在部上发现还是不行!看样和上面出的问题不是一回事!!真想吐!!都不知道该骂谁好!!(呵呵,骂人是不对的) 最后我们在本地做了个小实验 public class Keck { public static void main(String[] args) throws UnsupportedEncodingException { System.out.println(new String("粥一生".getBytes(), "UTF-8")); } } 控制台打印出和在linux下一样的“?????”。后又换成了GBK public class Keck { public static void main(String[] args) throws UnsupportedEncodingException { System.out.println(new String("粥一生".getBytes(), "GBK")); } } 这回打印出了正确的“粥一生”。接着我们把解压的字符集显示的设为GBK ZipFile zipFile = new ZipFile(zipFileName, "GBK"); 部署到linux上,访问O了!!这下终于明白是怎么回事了。有点爽的感觉,但还是为这事有点恶。(“跨平台相当好是java的卖点”!! 哎.....) 问题分析 [list] ZipFile zipFile = new ZipFile(zipFileName); 这样创建ZipFile对象的话,解压时会取本地系统的字符集生成文件名字符串。这样在windows下压的zip文件到linux下解压就会出现乱码问题。所以要像上面一样创建对像时指定字符集。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-10
用什么编码打包的,就要用什么编码解包。 |
|
返回顶楼 | |