Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ZipOutputStream和ZipEntry时,阿拉伯文文件名已损坏_Java_Arabic - Fatal编程技术网

Java 使用ZipOutputStream和ZipEntry时,阿拉伯文文件名已损坏

Java 使用ZipOutputStream和ZipEntry时,阿拉伯文文件名已损坏,java,arabic,Java,Arabic,当我使用ZipOutputStream和ZipEntry将一些文件压缩到一个zip文件时,我发现在解压缩zip文件时,阿拉伯语文件名已损坏,尽管英语文件名是正确的 e、 g.╪┤╪▒┘â╪⌐ ╪º┘å╪╕┘à╪⌐ ╪º┘ä╪º╪¬╪╡╪º┘ä╪º╪¬ ┘ê╪º┘ä╪¡┘ä┘ê┘ä ╪º┘ä╪ú┘à┘å┘è╪⌐ ╪º┘ä┘à╪¡╪»┘ê╪»╪⌐ 而不是: Java版本:1.6 我的代码(起点convertToZip): 这是JDK6中的一个示例。在任何非ascii文件名上生成。要解决此问题,您可以

当我使用ZipOutputStreamZipEntry将一些文件压缩到一个zip文件时,我发现在解压缩zip文件时,阿拉伯语文件名已损坏,尽管英语文件名是正确的

e、 g.
شركة انظمة الاتصالات والحلول الأمنية المحدودة

而不是:

Java版本:1.6

我的代码(起点convertToZip): 这是JDK6中的一个示例。在任何非ascii文件名上生成。要解决此问题,您可以尝试以下任一方法:

  • 使用JDK7(b57)或更高版本
  • 或者使用不同的zip库,例如

  • 请回答您的问题,并向我们展示您使用的代码。还请提供一些示例文件的名称。您使用的Java版本是什么?我添加了代码,Java版本为1.6,可能与Java版本重复。您的意思是Java版本中的问题。我需要使用ZipArchiveOutputStreamNo的示例,这将超出您的问题范围。
    public void convertToZip(OAApplicationModule oaapplicationmodule,Number AuctionHeaderID)
      {
            OADBTransaction oadbtransaction = oaapplicationmodule.getOADBTransaction();
            OracleResultSet rsZippedEmptyBlob= PrepareNewZipProcess ( oadbtransaction , AuctionHeaderID) ;
    
            try
            {
                if ( !rsZippedEmptyBlob.next() )
                {
                    return ;
                }
                OracleResultSet rLoopSourceBlob =  (OracleResultSet)GetBlobResultSetFromRFX ( oadbtransaction , AuctionHeaderID ) ;
                BLOB zippedEmptyBlob = rsZippedEmptyBlob.getBLOB(1);
                ZipOutputStream zosFinal = new ZipOutputStream ( zippedEmptyBlob.getBinaryOutputStream()); 
                zosFinal.setMethod(ZipOutputStream.DEFLATED); 
                byte[] bytesArrayFromSourceBlob = new byte[1024]; 
                while(rLoopSourceBlob.next())
                {
                    BLOB sourceBlobFile = rLoopSourceBlob.getBLOB(1);     
                    ZipEntry zippedSingleFileName = new ZipEntry( rLoopSourceBlob.getString(2)  ) ;
                    zosFinal.putNextEntry(zippedSingleFileName);
                    int lengthRead ;
                    InputStream DocumentStream = sourceBlobFile.getBinaryStream();
    
                    while((lengthRead=DocumentStream.read(bytesArrayFromSourceBlob))>=0) //>0
                        {       
                            zosFinal.write(bytesArrayFromSourceBlob,0,lengthRead);
                        }
                    sourceBlobFile.getBinaryStream().close();
                    zosFinal.closeEntry();
                }
                zosFinal.close();
                oadbtransaction.commit();
            }
            catch ( Exception ex )
            {
                throw OAException.wrapperException(ex);
            }
    
      }