Dobry den,
vdaka za info. Pri pouziti kodovania "cp852" su nazvy pri zobrazeni vo Windows "Compressed (zipped) folder" korektne.
S pozdravom
Andrej Ferko

On 1. 3. 2012 15:48, Peter Štibraný wrote:
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





--


----------------------
     Andrej Ferko
     VSL Software
----------------------

Odpovedet emailem