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



Odpovedet emailem