jar.exe的encode问题
来源:互联网 发布:南昌淘宝大学 编辑:程序博客网 时间:2024/04/30 23:28
说起来我好像和小型机有仇,今天晚上更新程序死活也更新不上去,这个hpux11i真实麻烦。大多数ftp程序都不好用,后来只能用jar打包,打完后把程序放到hpux上用jar解压缩,见鬼,这都能出问题,结果报了一个异常。java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:298),唉咋办,上网查了查,发现居然是sun的一个bug,而且六年都没有改了,TNND,sun你就不能勤快点啊。
没办法,只能试了试,结果发现只要在同一个平台就没有问题,后来估计是平台的encode的问题,不过没找到在什么地方设置。解决办法:在windows下用jar压缩一个jar文件,然后用windows的ftp工具把这个文件传到hpux上,然后再在windows下用telnet工具连接到hpux上,执行jar xvf就好用了。
最后再鄙视一下sun的懒惰!
Bug ID:4820807
Votes 9 Synopsis java.util.zip.ZipInputStream cannot extract files with Chinese chars in name Category java:classes_util_jarzip Reported Against 1.2.1 , 1.4.1 , tiger Release Fixed State In progress, request for enhancement Related Bugs 4885817 , 4244499 Submit Date 19-FEB-2003 DescriptionFULL PRODUCT VERSION :java version "1.4.1"Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-b21)Java HotSpot(TM) Client VM (build 1.4.1-b21, mixed mode)FULL OPERATING SYSTEM VERSION :Microsoft Windows 2000 [Version 5.00.2195]Service Pack 3A DESCRIPTION OF THE PROBLEM :If ZipInputStream is used to read a zip file containing oneor more files with Chinese, Japanese or Korean names, thegetNextEntry method throws an IllegalArgumentException.STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :1. Create a zip file containing at least one file with aChinese, Japanese or Korean filename.2. Try to read using a ZipInputStream.EXPECTED VERSUS ACTUAL BEHAVIOR :Should return a valid entry with the correct filenameinstead of throwing an exception.ERROR MESSAGES/STACK TRACES THAT OCCUR :java.lang.IllegalArgumentException at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:291) at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:230) at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:75)REPRODUCIBILITY :This bug can be reproduced always.---------- BEGIN SOURCE ----------import java.io.FileInputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;public final class TestCase { public static void main(String[] args) throws IOException { ZipInputStream zis = new ZipInputStream(new FileInputStream("myfile.zip")); ZipEntry entry; while ((entry = zis.getNextEntry()) != null) { System.out.println("found " + entry.getName()); } }}---------- END SOURCE ----------CUSTOMER WORKAROUND :Do not use CJK filenames in zip files.(Review ID: 181382) ====================================================================== xxxxx@xxxxx 2003-09-02Same problem reported by a CAP member from Germany:J2SE Version (please include all output from java -version flag): java version "1.4.1" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-b21) Java HotSpot(TM) Client VM (build 1.4.1-b21, mixed mode)and java version "1.5.0-beta" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b16) Java HotSpot(TM) Client VM (build 1.5.0-beta-b16, mixed mode)Does this problem occur on J2SE 1.3, 1.4 or 1.4.1? Yes / No (pick one) YesOperating System Configuration Information (be specific): English Linux and German Win2KBug Description: A ZIP file with entries that contain german umlauts. When read read these entries using ZipInputStream.getNextEntry() it throws an IllegalArgumentException at:Exception in thread "main" java.lang.IllegalArgumentException at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:298) at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:237) at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:73) at ZipUmlauts.main(ZipUmlauts.java:22) It would be better, if the getUTF8String() method would just ignore these "illegal" characters or add them "as-is".Test Program: (ZipUmlauts.java umlauts.zip)-------------import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;/* * ZipUmlauts.java created on Sep 1, 2003 8:45:08 AM *//** * @version ${Id:} * @author rs * @since pirobase®CB 1.0 */public final class ZipUmlauts { public static void main(String[] args) throws IOException { FileInputStream fis=new FileInputStream("umlauts.zip"); ZipInputStream zis=new ZipInputStream(fis); ZipEntry ze; while ((ze=zis.getNextEntry())!=null) { System.out.println(ze.getName()); } }}Work Around
N/AEvaluation
Unfortunately, fixing this in a backward-compatible way may be impossible.At least, for non-ASCII file names, Java should be able to create fileson one system and extract them on a different system, even if theencodings are different.The suggestion of adding an encoding attribute is a good one.That should have been done when the decision to encode file namesin UTF-8 was first made. xxxxx@xxxxx 2003-09-04I have confirmed that, as long as one uses Sun's J2SE zipimplementation consistently, in a environment where file.encodingsupports the character set of interest,that one can create, list and extractjar/zip files containing non-ASCII characters (including Chinesecharacters) correctly. Other zip implementations also havecharacter encoding interoperability problems, so J2SE'simplementation is not alone.The suggestion of falling back to file.encoding is an appealing one,but it's quite dangerous to go down that route.Encoding "autodetection" is a good interactive feature for users, butit's not so good for file formats. To have a file be properly readabledepending fairly randomly on the data bit patterns stored within itis a reliability disaster. It's much better to have consistent failurethan intermittent "success".Re-architecting zip to record the encoding of the file names willhopefully get done for J2SE 1.6. xxxxx@xxxxx 2003-11-25I believe this is a duplicate of 4244499. See the evaluation of that bug report for a relatively simple proposed solution. xxxxx@xxxxx 2005-1-29 00:28:38 GMT
- jar.exe的encode问题
- 关于android.jar里的java.net.URLEncoder.encode()和jdk里的java.net.URLEncoder.encode()出现的问题
- decode/encode的差异问题
- URLEncoder.encode的默认编码问题
- Java对空格的encode格式问题
- 解决maven以及eclipse的jar以及exe中文乱码问题
- 解决maven以及eclipse的jar以及exe中文乱码问题
- 关于jar生成exe时出现背景图片无法显示的问题
- jar(jar.exe)工具
- JAVA的jar打包成exe文件
- JSmooth的使用:JAR包弄成EXE
- JAR文件转可执行的exe文件
- java的jar打包成exe文件
- duduprosvc.exe的问题
- 解决jad.exe查看外部jar包源码失败问题
- Jar 转 EXE 可以脱离 java 环境 jar to exe和Jsmooth 的使用
- Jar 转 EXE 可以脱离 java 环境 jar to exe和Jsmooth 的使用
- 关于matlab程序打包成的EXE文件或者jar包中访问MySQL数据库的问题
- JSP生成彩色验证码升级版-汉字验证码(源码下载)
- Joomla!简介
- Eclipse 3 + Lomboz 3 + Tomcat 5 开发网站
- 用67种语言说“我爱你”
- 今天我没有找到方向~
- jar.exe的encode问题
- 缺陷管理的工业标准用语及其含义。
- 关于校园网内最近流行的rose.exe病毒
- 典型的逻辑错误!
- 我没有在自己的行业里边做blog
- 使用Eclipse3.0+lomboz3.0+jboss3.2.3开发EJB
- 关于GridView的无数据显示问题..
- VB编程实现XP风格之终结篇
- java连接数据库准备