Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca  (Přečteno 1987 krát)

Johnycfc

  • Návštěvník
  • *
  • Příspěvků: 4
  • Karma: +1/-1
    • Zobrazit profil
Dobrý den,
v jedné složce mám několik set souborů jak v kódování WINDOWS-1252, tak i v UTF-8 a potřebuji je mít všechny v UTF-8. Jakmile provedu příkaz, že to chci z WINDOWS-1252 do UTF-8 a ten soubor je v UTF-8, tak se ty znaky zobrazují špatně (např. francouzština). Dalo by se to zjistit přes enca nebo i další příkazy zda je to v UTF-8, ale těch souborů je dost a následné kopírování, vymazávání a vkládání zpět je zdlouhavé. Navíc budu to potřebovat i do budoucna, není to tedy jednorázová akce. Enca je perfektní věc, jestli je kódování v UTF-8 nebo WINDOWS-1250 a zadám do UTF-8, tak mi to nic nepodělá a bude to prostě správně v UTF-8. Bohužel tam nefunguje WINDOWS-1252 (francouzština aj. jazyky). Něco takového hledám. Nejradši bych to měl na jedno zkopírování do terminálu s pouhou změnou adresáře. Zkoušel jsem hledat i na Google a nejlépe se na to hodí asi:
Kód: [Vybrat]
recode utf8..utf16 <file >/dev/null || recode cp1252..utf8 <file>newfilePotřeboval bych to napsat, tak abych nemusel kopírovat názvy jednotlivých souborů, ale mohl zadat celou složku. Potřebuji přepsat ty soubory. Nejsem tak zkušený, abych to zvládl sám nebo jakékoli jiné funkční řešení.
Děkuji mnhokrát
« Poslední změna: 14 Leden 2011, 18:02:38 od Johnycfc »

starenka

  • Závislák
  • ****
  • Příspěvků: 1276
  • Karma: +139/-15
  • Karma: plynová [zapalovač] [hasičák]
    • Zobrazit profil
    • /home/starenka
Re: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca
« Odpověď #1 kdy: 14 Leden 2011, 22:37:50 »
a iconv znas?

jinak soubory v adreari projdes ala:
Kód: [Vybrat]
find *.priponka | while read file; do prikaz "$file"; done
mojenka | blozinek v2 | starej blozinek | krotim hady za penize | UJ! Kalužátor

Debian testing vrní v Thinkpadu X200/bedně/EEE 900a, MasoX Tiger v lampe

Pavel1TU

  • Člen
  • **
  • Příspěvků: 263
  • Karma: +14/-3
    • Zobrazit profil
    • Můj WEBlog
Re: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca
« Odpověď #2 kdy: 20 Únor 2011, 18:54:02 »
nepochopil jsem zda se to týká obsahu či pouze jmen souborů - na jména doporučím toto:
CONVMV
viz http://man-wiki.net/index.php/1:convmv

nejprve pustíš
Kód: [Vybrat]
convmv -r -f cp1252 -t UTF-8 /home/pavelprojede všechny podadresáře a POUZE VYPÍŠE jaké změny udělá (CP z jaké do jaké si upravíš)

pak pouze přidáš --notest
Kód: [Vybrat]
convmv --notest -r -f cp1252 -t UTF-8 /home/pavela během chvilky máš hotovo :-)

Doplňuji:
-r  projede podadresáře
-f  výchozí codepage (může být i tvar ISO-xxxx-x)
-t  do jaké codepage převést
« Poslední změna: 20 Únor 2011, 19:01:03 od Pavel1TU »
Ubuntu 10.04 (9.04), Slack 12.2, Gentoo 10.1
ASUS M2N-E SLI nForce500; AMD Athlon A64 X2 4200+EE; 2G DDR2 800MHz; ASUS EN8500GT PCI-E; HDD 2x320G, AUDIOTRAK-Prodigy-7.1-hifi

Uran

  • Člen
  • **
  • Příspěvků: 341
  • Karma: +8/-1
    • Zobrazit profil
Re: potřeba kódovat soubory WINDOWS-1252 do UTF- 8 // něco jako enca
« Odpověď #3 kdy: 21 Únor 2011, 11:23:28 »
Ja pouzivam na prevod titulku z cp1250 nasledujici humpolacky skript.
Kód: [Vybrat]
#!/bin/bash
rm -rf ./zaloha-titulku
mkdir ./zaloha-titulku
find . \! -path ./zaloha-titulku/\* -type f -iregex '.*\(srt\|txt\|sub\)' | while read F
do cp -r --parents "$F" ./zaloha-titulku
done

find . \! -path ./zaloha-titulku/\* -type f -iregex '.*\(srt\|txt\|sub\)' | while read F
do if [ "`file "$F" | grep -o Non-ISO`" = "Non-ISO" ]
then  cstocs -i cp1250 utf8 "$F"
fi
done

Pro vase/tve potreby bych ho upravil:
Kód: [Vybrat]
#!/bin/bash
rm -rf ./zaloha
mkdir ./zaloha
find . \! -path ./zaloha/\* -type f | while read F
do cp -r --parents "$F" ./zaloha
done

find . \! -path ./zaloha/\* -type f | while read F
do if [ "`file "$F" | grep -o cp1252`" = "cp1252" ]
then  cstocs -i cp1252 utf8 "$F"
fi
done

Prvni cast zazalohuje soubory, vdruhe se otestuje o jaky soubor jde a pak se obsah souboru prevede na utf8
Doufam, ze jsem to pri tom prevodu nejak nepomrsil a urcite to jde resit nejak elegantnejs.

"Pouze text v MS Wordu je opravdu čistý, příteli."