Portál AbcLinuxu, 26. května 2024 21:51


Dotaz: ZIP a cp1250 - neverending story

16.8.2022 10:19 tom
ZIP a cp1250 - neverending story
Přečteno: 676×
Odpovědět | Admin
Zdravim,

konecne jsem nasel zpusob, jak na debianu rozbalit ZIP se soubory, ktere obsahuji diakritiku v nazvu, zrejme jeste v cp1250. s UTF-8 problem neni

Musel jsem nejprve doinstalovat ceske locales:
# dpkg-reconfigure locales
...
[*] cs_CZ.UTF-8 UTF-8
Dale v terminalu nastavit:
$ export LANG=cs_CZ.UTF-8
A nakonec ZIP rozbalit windowsovym 7zipem spustenym pres wine:
$ wine 7za.exe e -scsUTF-8 soubor.zip 
Resil jste to prosim nekdo? Mate na to jednodussi postup? Treba nejakym jinym nastrojem

Diky

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.8.2022 10:28 tom
Rozbalit Rozbalit vše Re: ZIP a cp1250 - neverending story
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jenom upresnim... potrebuji ty ZIPy rozbalovat na vzdalenem serveru, tedy v prikazovem radku

Jsou to ZIP soubory, ktere produkuje Ministerstvo pro mistni rozvoj

Řešení 1× (Georgo10)
16.8.2022 11:24 Zaphod | skóre: 37 | blog: zaphod_blog
Rozbalit Rozbalit vše Re: ZIP a cp1250 - neverending story
Příloha:

Pozri sa na príspevok. Podľa neho som si vytvoril script:

#!/usr/bin/env bash
#
# Script rozbali .zip subor, skovertuje cs/sk znaky a zbali ho do .7z
# alebo s prepinacom x rozbali .zip do aktualneho adresara
# potrebuje p7zip a convmv
#

# Su nainstalovane potrebne programy?
command -v 7z >/dev/null 2>&1 || { echo "Chyba program 7z (balik p7zip-full alebo p7zip)"; exit 1; }
command -v convmv >/dev/null 2>&1 || { echo "Chyba program convmv (balik convmv)"; exit 1; }

# spracovanie vstupnych parametrov
copy=false
if test $# -eq 0 -o $# -ge 2; then
   if test "$1" = x -a $# -le 2; then
      copy=true
      shift
   else
      echo -e "Pouzitie:"
      echo -e "zip27z subor.zip - zip sa skonvertuje do .7z"
      echo -e "zip27z x subor.zip - zip sa robali do aktualneho adresara"
      exit 1
   fi
fi

# existuje subor?
zipfile="$1"
name=${zipfile%.*}
if test ! -f "$zipfile"; then
   echo "Subor $zipfile neexistuje"
   exit 1
fi

# rozbal zip, koverzia znakov
tmpdir=$(mktemp -d)
LANG=C 7z x -bso0 -bsp0 "$zipfile" -o"$tmpdir"
if test $? -ne 0 ;then
   exit 1
fi
convmv -f CP852 -t UTF-8 -r --nfc --replace --notest "$tmpdir" \
   2>&1 >/dev/null | grep -v "Ready!"

# kopirovat alebo zbalit do .7z
if test $copy = true; then
   cp -r -i --preserve=timestamps "$tmpdir"/* .
else
   7z a -bso0 "$name".7z "$tmpdir"/*
fi

# mazanie
rm -r $tmpdir

exit 0
zip27z skovertuje .zip do .7z
zip27z x rozbalí .zip
Script je v prílohe.
16.8.2022 11:54 tom
Rozbalit Rozbalit vše Re: ZIP a cp1250 - neverending story
Diky! Kouknu na to
16.8.2022 12:08 tom
Rozbalit Rozbalit vše Re: ZIP a cp1250 - neverending story
Funguje to!

Vypada to, jak cerna magie, :) ale funguje to

Jeste jednou diky a mejte se!
19.8.2022 11:34 drnest | skóre: 13 | blog: Dřinu nechte strojům
Rozbalit Rozbalit vše Re: ZIP a cp1250 - neverending story
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já se spíš setkal s tím, že ten zip je v cp852. Našel jsem krátký script v pythonu2, který to rozbalí aniž by se snažil to nějak překódovávat.
#!/usr/bin/python

import zipfile
import sys

zipfile.ZipFile(sys.argv[1], 'r').extractall(sys.argv[2] if len(sys.argv) > 2 else '.')
A pak to pomocí convmv překóduju na co chci já:
python unzip.py archiv.zip 
convmv -r -f cp852 -t utf8 rozzipovaný_adresář
30.8.2022 08:13 tom
Rozbalit Rozbalit vše Re: ZIP a cp1250 - neverending story
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jeste jedno reseni se objevilo, velice jednoduche

Pouziti nastroje unar:
unar -e CP852 soubor.zip

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.