[cstex] OFF TOPIC: Problém s kódováním souboru (různé znakové sady pohromadě???)

Zdenek Wagner zdenek.wagner at gmail.com
Wed Feb 13 00:57:55 CET 2013


Dne 12. února 2013 23:54 Jaroslav Hajtmar <hajtmar at gyza.cz> napsal(a):
> Dobrý den.
>
> Velmi se omlouvám za off-topic, ale vzhledem k tomu, že je mezi vámi mnoho
> expertů, tak se pokusím vás požádat o radu.
>
> Vyexportoval jsem jednomu kamarádovi velkou MySQL databázi v níž bylo zřejmě
> mnoho různě kódovaných tabulek. Některá data byla zřejmě kódovaná CP1250,
> něco v UTF-8, dost stará data celkem kolem 12MB dat.
> Vtuto chvíli mám dump databáze ve formátu sql - je to textový soubor, který
> když otevřu PSPadem, tak je část textu zcela nečitelná...
>
Automatickému rozpoznání kódování bych moc nevěřil. Například
ISO-8859-2 a CP1250 se liší jen v několika znacích, takže se může
stát, že podle několika prvních řádků se to rozlišit nedá, editor si
něco vybere a často je to špatně. Nevím, zda existují nativní programy
pro Windows, ale určitě jsou unixové utility v cygwin, možná i mimo.

Ke konverzi mezi kódováními se dá použít iconv. Když jsem ještě
používal OS/2, kde jsem iconv neměl, napsal jsem si iconv.xsl, je to
pár řádků, ale vyžaduje to XSLT 2.0, tedy procesor Saxon verze 8.
Zpracovává libovolné textové soubory.

Program iconv má výhodu i v tom, že nemusím pomocí parametru -o psát
výstup do souboru, ale dá se pustit na obrazovku. Zejména v případě,
kdy mám krátký soubor s neznámým kódováním, to tak dělám. Zkusím si
několik možností a po nalezení té správné to pošlu do souboru. Totéž
zvládne i můj iconv.xsl.

Soubor lze rozdělit na části programem split, ale jeho možnosti nemusí
být vhodné právě na tento účel. Asi bych použil awk (existuje pro
Windows i mimo cygwin, ale je nutno mít RSX). Například řádky 101 až
199 včetně lze vyextrahovat jednoduše pomocí:

awk 'NR>100 && NR<200 {print}' vstup >vystup

Nejsem si zcela jist použitím uvozovek či apostrofů, takhle to bude
chodit v Linuxu, ve Windows je možná konvence jiná (záleží to na
cmd.exe). Samozřejmě je možno napsat skript, který se inteligentně
podívá do souborů dovnitř a rozdělí jej na soubory podle tabulek. Je
to chytrý program, kterým lze rychle řešit i poměrně komplikované
úlohy.

Pokud je každá tabulka v jiném kódovíná a klient byl nakonfigurován
tak, aby při komunikaci se serverem nějaké kódování vnutil, je možné,
že došlo k nejhoršímu a data jsou poškozena, možná i nevratně...

> Bohužel je již hosting i s databází již zrušen, takže už nemám možnost
> provést DUMP databáze metodou per-partes.
>
> Zkoušel jsem vydumpovaný soubor dekódovat různými metodami - zapínat a
> vypínat automatické rozpoznání kódování, zapínat a vypínat různá kódování
> tak, abych několik z tabulek (ke konci souboru) nějakým způsobem zachránil,
> abych mohl zpět ta data zapsat do databáze tak aby byla čitelná...
>
> Jsou to pro mne velmi důležitá data a teď jsem docela nahraný. Zkoušel jsem
> i odmazat úvodní část dat a pak ta zbývající data nějak načíst s
> automatickým rozpoznáním kódování, ale pořád niczásadního. Drobný úspěch
> jsem zaznamenal, když malá (editorem vyřízlá) část souboru se najedkou jeví
> jako čitelná, nicméně nejsem schopen už tu akci nějak zopakovat.
>
> Neznáte, prosím, nějaký SW, který by to dokázal nějak přechroustat a oddělit
> od sebe různá kódování atd?
> Lze nějakým editorem "vyříznout" část dat a uložit to tak aby tam zůstalo
> jen to kódování které potřebuju?
> Nebo aspoň nějaký nápad, co by se s tím dalo dělat...
>
> Díky za případné rady a ještě jednou se omlouvám za off topic
>
> Jarda Hajtmar
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz




More information about the csTeX mailing list