Dobry den,
pouzivate chybne kodovanie. Nesmiete pouzit Windows-1250 ale OEM 852 ("cp852" v
Jave).
-Peter
On Thursday, 1. March 2012 at 15:17, Andrej Ferko wrote:
> Dobry den,
> potreboval by som v Jave vytvorit zip archiv obsahujuci subory s
> diakritikou v nazvoch. Je mi jasne ze zip format to podla specifikacie
> neumoznuje tak aby nazvy suborov vo vytvorenom archive boli korektne
> zobrazene v kazdom unzip programe. Chcel by som aby nazvy boli korektne
> pri zobrazeni vo Windows "Compressed (zipped) folder".
>
> Skusam to na Windows 7 s nastavenym Location na Slovakia. Volanie
> java.nio.charset.Charset.defaultCharset() mi vrati kodovanie
> Windows-1250. Docital som sa ze Windows "Compressed (zipped) folder"
> pouziva default kodovanie pre nazvy suborov podla nastaveni systemu,
> preto uvazujem zatial len o tom ze v nazvoch suborov mozu byt len znaky
> z kodovania Windows-1250.
>
> Podarilo sa mi vytvorit archiv obsahujuci nazvy suborov korektne
> zobrazene v nahlade obsahu zipu cez Total Commander (TC). Vo Windows
> "Compressed (zipped) folder" je zobrazenie vo vsetkych pripadoch nekorektne.
>
> Pre nahlad v TC su vysledky nasledovne:
> 1./ Java 6 - no ok
> 2./ Java 7 - ok
> 3./ org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream - ok
> 4./ Java 7 s explicitne nastavenym UTF-8 kodovanim pomocou konstruktora
> ZipOutputStream(OutputStream out, Charset charset) - ok
> 5./ org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream s
> nastavenym UTF-8 - ok
> 6./ Java 7 s nastavenym Windows-1250 kodovanim pomocou konstruktora
> ZipOutputStream(OutputStream out, Charset charset) - no ok
> 7./ org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream s
> nastavenym Windows-1250 kodovanim - no ok
>
> Riesili ste takyto problem?
>
> Prikladam kratky program pre Javu 7 na testovanie, keby sa niekto chcel
> hrat:
>
> java.util.zip.ZipOutputStream zip = new
> java.util.zip.ZipOutputStream(new java.io.BufferedOutputStream(new
> java.io.FileOutputStream(zipped)),
> java.nio.charset.Charset.forName("Windows-1250"));
>
> zip.putNextEntry(new java.util.zip.ZipEntry("ahojľščťžýáíé.txt"));
> zip.write("ahoj".getBytes());
>
> zip.closeEntry();
> zip.close();
>
>
>
> S pozdravom,
> Andrej Ferko