Page 1 of 1

čeština v zip

Posted: 2009-02-25, 13:02 UTC
by geon
Ahoj,

nezobrazují se mi správně české znaky v zipech, pokud je zazipováno pomocí windowsovské komprimace. Mám 7.02.

Díky za pomoc, jestli to jde

Posted: 2009-02-25, 13:19 UTC
by totcmd
O jaké soubory se jedná?
html, txt, doc,...

Kdy se ti to děje?
Po plnohodnotné extrakci nebo při extrakci do složky temp nebo při otevření souboru přímo ze zip archivu...

Kde se nezobrazují ty znaky ok?
V prohlížeči (např v IE pokud se jedná o *.html)
V editoru (např v notepad otevřený *.html)
nebo v CTRL+Q ... náhled na soubor v TC?

Posted: 2009-02-25, 17:00 UTC
by geon
Jedná se o jakékoliv soubory, které mají české znaky ve jméně (ne v obsahu souboru).

Ve Windows, v průzkumníkovi, zakomprimuji - pravé tlačítko - odeslat - komprivaná složka metoda zip. čeština je v zipu OK.

Otevřu TC, Enter na souboru, vidím v panelu seznam souborů v zipu, a oni mají již ty české znaky špatně. I když je nakopíruji někam jinam přes F5, jsou znaky pořád špatně. Pokud rozbaluji pod Windows pod průzkumníkem, tím vestavěným windows komprimátorem, tak je vše OK.

Snad jsem to již napsal srozumitelně, kdyžtak ještě upřesním.
Díky.

Posted: 2009-02-25, 19:01 UTC
by Hacker
Ahoj geon,
Potvrdzujem. Uvidime, ci sa s tym daco da robit. Dam vediet.

Roman

Posted: 2009-02-26, 22:19 UTC
by jvh
2 Hacker:
Tak jsem se v tom trochu hrabal a problém je asi ve File Headeru ZIP souboru, který produkují Windows a který pak čte TC.

Code: Select all

Z dokumentace PKWARE Appnote.txt:

 F.  Central directory structure:
      [file header 1]
      ....
      [file header n]
      [digital signature] 

      File header:
        central file header signature   4 bytes  (0x02014b50)
        version made by                 2 bytes
        ...

 J.  Explanation of fields:
      version made by (2 bytes)

         0 - FAT file system (DOS, OS/2, NT)      + PKWARE 2.50+ VFAT, NTFS
         ...
         11 - MVS   | NTFS file system (WinNT) (actively used by Info-ZIP's Zip for NT since Sep-1993)
V ZIPu z Windows je ve File Headeru/Headerech v upper byte "version made by" hodnota 0x0B (HEX) -> soubor vytvořen -> 11 - MVS NTFS file system (WinNT).

Při komprimaci pomocí TC je v odpovídajícím bytu hodnota 0x00 -> soubor vytvořen -> 0 - FAT file system (DOS, OS/2, NT).

Pokud jsou File Header byty 0x0B nahrazeny 0x00, TC načte diakritiku normálně.:idea:

Pozn.: Doufám, že Ti to k něčemu bude :) (a také, že je to správně).

Posted: 2009-02-27, 11:00 UTC
by Hacker
jvh,
Dik, preposlal som, uvidime.

Roman

Posted: 2009-03-06, 23:57 UTC
by Hacker
jvh,
Tak sme dostali odpoved:
ghisler(Author) wrote:The problem is that it's impossible to know for sure whether a zip file uses DOS encoding or Windows encoding. TC therefore assumes that files which report "made by DOS" use the DOS font, and "made by Windows" use Windows font. Unfortunately some programs ignore that and report "made by Windows" but use DOS encoding. There is no good way to find these, TC checks some characters, but cannot find all situations because some character codes exist in both encodings. :(
Sorry.

Roman

Posted: 2009-03-09, 23:03 UTC
by jvh
Hacker wrote:Tak sme dostali odpoved:
ghisler(Author) wrote:The problem is that it's impossible to know for sure whether a zip file uses DOS encoding or Windows encoding. TC therefore assumes that files which report "made by DOS" use the DOS font, and "made by Windows" use Windows font. Unfortunately some programs ignore that and report "made by Windows" but use DOS encoding. There is no good way to find these, TC checks some characters, but cannot find all situations because some character codes exist in both encodings. :(
2 Hacker
Díky za odpověď. Divné je, že např. WinRAR a 7-Zip si s tím poradí, takže způsob jak zjistit kódování určitě existuje.
V rychlosti mě ještě napadlo (ber to s velkou rezervou) zkusit z názvu souboru odstranit diakritiku a podle výsledku určit zda se jedná o kódování DOS nebo Win...

Posted: 2009-03-10, 21:56 UTC
by Hacker
jvh,
V rychlosti mě ještě napadlo (ber to s velkou rezervou) zkusit z názvu souboru odstranit diakritiku a podle výsledku určit zda se jedná o kódování DOS nebo Win..
No, ja by som rad, ale kym nemame funkcny algoritmus, ako naisto zistit kodovanie, tak ako poznam Christiana, ho nepresvedcime. :(

Roman

Posted: 2009-03-13, 14:13 UTC
by jvh
Hacker wrote:No, ja by som rad, ale kym nemame funkcny algoritmus, ako naisto zistit kodovanie, tak ako poznam Christiana, ho nepresvedcime. :(
Ahoj,

univerzálně použitelný postup je:
- načíst text s diakritikou
- bez ohledu na kódování, provést převod pro všechny znak. sady, t. j. v případě češtiny
DOS (CP852) do ASCII + spočítat znaky do ASCII 127 (nebo nad 128),
Win (CP1250) do ASCII + spočítat znaky do ASCII 127 (nebo nad 128),
ISO 8859-2 do ASCII + spočítat znaky do ASCII 127 (nebo nad 128),
- vítězí kódování s nejvíce znaky do ASCII 127 (nebo nejméně znaky nad 128), hodnoty 127 a 128 míněny včetně

Převodní tabulky bych teoreticky mohl dohledat.

Problémy:
- převod z vícero znak. sad asi bude chvíli trvat (může pomoci omezení velikosti vstupních dat, detekce jazyka, detailní nastavení, ...)
- 100% jistota správně vybraného kódování stejně nebude, obzvlášť u krátkých textů
- poměrně dost práce s implementací vs. malý zisk, takže být na místě p. Ghislera, věnoval bych se něčemu přínosnějšímu

A jsme zase tam, kde jsme byli... :(

Co zabudovat možnost manuální změny kódování ANSI (Win)/ASCII (DOS) při prohlížení ZIP archívů, podobně jako při prohlížení v Listeru?

Posted: 2009-03-13, 22:25 UTC
by Hacker
jvh,
vítězí kódování s nejvíce znaky do ASCII 127 (nebo nejméně znaky nad 128)
Mg, tak nejak sme uz nieco riesili s rustinou v bete...
Co zabudovat možnost manuální změny kódování ANSI (Win)/ASCII (DOS) při prohlížení ZIP archívů, podobně jako při prohlížení v Listeru?
Navrhol som pouzit nejaky hotkey na vyvolanie menu pri vstupovani do archivu, cim by sa vyriesil aj problem viacerych WCX schopnych otvorit dany archiv, ale, akosi, bez odozvy. Zial.

Roman