Len dodam... napokon sme v nasom produkte pouzili komercnu IP Works Zip kniznicu, lebo umoznovala sifrovat subormi tak, aby to WinZip vedel precitat. Nazvy suborov kodujeme podla toho, komu ich posielame. Ak idu na Mac, subory su v UTF-8, ak idu na Windows, tak zistujeme jazykovu verziu a podla toho urcime OEM kodovanie. To potom pouzijeme. Vacsinou to funguje, ale nie je to dokonale.
S pozdravom, -Peter Stibrany On 6/25/07, Peter Stibrany <[EMAIL PROTECTED]> wrote:
Dobry den, tento problem som riesil a vysledky su nasledovne: 1) java.util.zip pouziva InfoZip format, ktory koduje mena suborov v UTF-8. Toto sa neda zmenit (iba ak sposobom, ktory naznacil kolega nizsie). (Nanestasie ZIP formatov je viac a v detailoch typu kodovanie mien suborov ci sifrovani sa lisia). 2) existuje TrueZip kniznica, ktora vam umozni nastavit si kodovanie mien suborov. (https://truezip.dev.java.net/) 3) Mac systemy ocakavaju mena suborov v ZIP-e kodovane v UTF-8 4) Windows ocakava mena suborov kodovane v OEM CodePage podla jazykovej verzie Windows. Tj. slovenske/ceske pouzivaju OEM 852, zatial co Danske windows pouzivaju 850. Zopar objasnujucich odkazov: * http://squirrelsewer.blogspot.com/2005/10/i18n-zip-file-woes.html * http://blogs.msdn.com/michkap/archive/2005/05/10/416181.aspx S pozdravom, -Peter Stibrany On 6/25/07, jeeff <[EMAIL PROTECTED]> wrote: > Ahoj, > > implementacia v Jave nepredpoklada, ze kodovanie nazvov suborov je v > cp852 (co v nasom regione je), takze to shavaruje. Musis si spravit > vlastne ZipInputStream a ZipOutputStream (+nejake dalsie aby to cele > fungovalo) podla zdrojakov a tie upravit tak, aby: > fileName = new String(b, 0, len, "Cp852"); > > Radovana Straube wrote / napĂsal(a): > > Dobry den, > > > > ked zipujem subory (pouzivam standarny java.util.zip a > > JDK 1.5), ktore maju v nazvoch diakritiku, vo > > vyslednom zip-e su nazvy suborov v zlom kodovani. > > Nic rozumneho som nevygooglila. Riesil uz niekto > > podobny problem? > > > > Dakujem > > Radovana Straube > > > > P.S. Pripajam aj metodu, ktorou pouzivam na zipovanie > > > > /** > > * Compress a directory > > * @param _sSourceDir a source directory > > * @return a path to an archive > > */ > > private String compressDir(String _sSourceDir) > > throws IOException { > > > > // These are the files to include in the ZIP file > > String[] sFilenames = new File(_sSourceDir).list(); > > > > // Create a buffer for reading the files > > byte[] byBuf = new byte[1024]; > > > > // Create the ZIP file > > String sZipArchive = extractArchiveName(_sSourceDir); > > ZipOutputStream out = new ZipOutputStream(new > > FileOutputStream(sZipArchive)); > > > > // Compress the files > > for (int i = 0; i < sFilenames.length; i++) { > > FileInputStream in = new > > FileInputStream(_sSourceDir + sFilenames[i]); > > > > // Add ZIP entry to output stream. > > out.putNextEntry(new ZipEntry(sFilenames[i])); > > > > // Transfer bytes from the file to the ZIP file > > int iLen; > > while ((iLen = in.read(byBuf)) > 0) { > > out.write(byBuf, 0, iLen); > > } > > > > // Complete the entry > > out.closeEntry(); > > in.close(); > > } > > > > // Complete the ZIP file > > out.close(); > > > > return sZipArchive; > > } > > > > > > > > ____________________________________________________________________________________ > > Boardwalk for $500? In 2007? Ha! Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games. > > http://get.games.yahoo.com/proddesc?gamekey=monopolyherenow > > > > > -- > jeeff > >
