EuroConvertor
Manuál v českém jazyce
Manual in English language
Stáhnout program + tento manuál
Prohlédnout zdrojový kód
Stáhnout zdroj.kód+knihovny+kompilátor
Popis EuroConvertoru
Seznam kódování
Syntaxe příkazové řádky
  Názvy kódování
  Speciální názvy kódování
  Autodetekce kódování
  Endianita
  Použití BOM
  Modifikátory vstupního kódování
  Modifikátory výstupního kódování
Chyby vstupního kódování
Chyby výstupního kódování
Závěrečná rekapitulace

Popis

EuroConvertor ver.20190125 mění kódování znaků v textových souborech.

Program obsahuje 16bitovou verzi pro DOS i 32bitovou verzi pro Windows v jednom souboru euroconv.exe. Pokud mu byly předány všechny požadované parametry, chová se jako konzolová aplikace a nevyžaduje interakci s uživatelem, takže je dobře použitelný v dávkových souborech. Jestliže byl spuštěn bez parametrů, například kliknutím v Průzkumníkovi MS Windows, EuroConvertor se spustí jako okenní aplikace, kde uživatel volí soubory a jejich kódování výběrem z nabídky. Mezi jednotlivými volbami se v tomto případě přechází stiskem Alt současně s podtrženým znakem nabídky, nebo klávesami Tab, Shift-Tab a volby se aktivují mezerníkem SPACE.

EuroConvertor je tedy použitelný v dávkových skriptech pro DOS a Windows 32 i 64bitových, anebo interaktivně ve Windows a v Unixových systémech prostřednictvím wine.

EuroConvertor je k dispozici bezplatně pro soukromé i firemní využití. Byl napsán v jazyce EuroAssembler, zdrojový kód si lze prohlédnout online a stáhnout spolu s asemblerem i s potřebnými knihovnami z odkazu EuroAssembler.
Spustitelná verze včetně tohoto manuálu je k dispozici ke stažení z webu vit$oft freeware jako euroconv.zip.

Řada dalších obdobných konvertorů zaměřených zejména na český jazyk je k dispozici na stránce porovnání převodníků češtiny od Davida Voříška.

Kódování

Konsorcium Unicode přidělilo pořadové číslo (codepoint) téměř každému lidstvem používanému znaku: písmenům, číslicím, symbolům, rámečkovým a dalším grafickým znakům, smajlíkům, piktogramům, obrázkovým ideogramům. Kódováním se rozumí vztah mezi vzhledem znaku (glyph) a přiřazeným číslem.

Prvních 128 čísel Unicode převzalo z normy ASCII (American Standard Code for Information Interchange), tyto znaky jsou identické ve všech zde podporovaných kódováních.

Alternativou k ASCII je EBCDIC (Extended Binary Coded Decimal Interchange Code) zavedený firmou IBM na sálových počítačích. Kódování EBCDIC nejsou EuroConvertorem podporována.

Každý znak z tabulky ASCII používá 7 bitů, horní polovina tabulky je nepoužita. Horních 128 pozic bývá často využíváno pro písmena s diakritikou, znaky jiných abeced než latinka, nebo pro semigrafiku. Většina evropských jazyků se spokojuje s omezením na 256 možných znaků zakódovaných v jenom bajtu, tato kódování se nazývají kódové stránky OEM (Original Equipment Manufacturer) a ANSI (American National Standards Institute).

EuroConvertor rozeznává tyto 8bitové kódové stránky:

IBM437, Mazovia, IBM737, IBM775, IBM850, IBM851, IBM852, IBM853, IBM855, IBM856, IBM857, IBM858, IBM859, IBM860, IBM861, IBM862, IBM863, IBM864, IBM865, IBM866, IBM867, IBM868, IBM869, IBM874, KOI8-R, KOI8-E, KOI8-T, KOI8-F, KOI8-CS, Kamenicky, IBM912, IBM1006, KOI8-RU, KOI8-U, Windows-1250, Windows-1251, Windows-1252, Windows-1253, Windows-1254, Windows-1255, Windows-1256, Windows-1257, Windows-1258, Mac-Roman, MAC-Arabic, Mac-Hebrew, Mac-Greek, Max-Cyrillic, Mac-Romanian, Mac-Ukrainian, Mac-Thai, Mac-CE, Mac-Icelandic, Mac-Inuit, Mac-Turkish, Mac-Croatian, Mac-Gaelic, Mac-Celtic, Mac-Latin, NextStep, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-12, ISO-8859-14, ISO-8859-15, ISO-8859-16.

Každý znak v kódování ASCII, OEM a ANSI zabírá přesně 1 bajt.
V kódování Unicode UTF-32 zabírá každý znak 4 bajty.
V kódování Unicode UTF-16 většina znaků zabírá 2 bajty (pokud lze jejich kódovou pozici – codepoint – uložit jako 16bitové číslo. Ostatní znaky (asijské abecedy, emoji apod.) se kódují pomocí dvojice 16bitových čísel zvaných surrogates.
Nejoblíbenější způsob kódování Unicode UTF-8 používá proměnlivou délku kódu 1 až 4 bajty.

EuroConvertor nepodporuje kombinované znaky tvořené samostatným diakritickým znaménkem následujícím obyčejné písmeno.

Syntaxe

EuroConvertor vyžaduje na příkazové řádce čtyři mezerou oddělené parametry v tomto pořadí:

  1. určení vstupního kódování
  2. určení výstupního kódování
  3. název vstupního souboru
  4. název výstupního souboru

Příklad:
euroconv.exe IBM852 UTF-8 input.txt output.txt

Pokud je uveden ještě neoficiální pátý parametr, bude EuroConvertor po vypsání závěrečné zprávy čekat na stisk klávesy, což zabraňuje zmizení konzolového okna dříve, než uživatel stačil zprávu přečíst.

Názvy kódování

Způsob pojmenování požadovaných kódování akceptovaný tímto programem je značně benevolentní. Nezáleží na velikosti písmen, na přítomnosti pomlček či dalších interpunkčních znamének, mnohdy stačí uvést pouze nomenklaturní číslo kódování k jeho jednoznačnému určení. Kromě názvů podporovaných kódování, které byly uvedeny výše, EuroConvertor akceptuje také identifikátory kódových stránek přiřazených firmou Microsoft, například kódování UTF-8 má přidělenu kódovou stránku 65001.
K volbě kódování Windows-1252 bychom mohli napsat také win-1252, CP1252 nebo jen 1252.
Jiný příklad: kódování ISO-8859-10 (Latin 6) používané ve Skandinávii bychom mohli specifikovat i jako 8859-10, CP28600, 28600, IBM919 nebo 919.

Speciální názvy kódování

Použitím výrazu enc jako prvního parametru příkazové řádky vyžádáme na EuroConvertoru, aby zobrazil seznam všech podporovaných názvů kódování:
euroconv enc

Výraz OEM nebo ANSI lze použít místo výslovné specifikace kódové stránky. EuroConvertor pak použije kódování zvolené uživatelem v Regionálním nastavení jeho systému. V případě českých Windows se použije IBM852 (OEM Latin2) a Windows-1250 (středoevropská ANSI stránka).

Autodetekce vstupního kódu

Výrazem auto požádáme EuroConvertor, aby se sám pokusil určit kódování použité ve vstupním souboru porovnámím četnosti běžných písmen a jejím srovnáním s počtem znaků neočekávaných v běžném textu. Analyzuje se pouze první 1 MB textu (v dosové verzi jen prvních 48 KB).

Autodetekce funguje pouze u čistě textových souborů, může selhat, pokud je text příliš krátký nebo pokud obsahuje větší množství symbolů, semigrafiky, nelatinských písmen nebo dokonce strojový kód.

Endianita

Endianita určuje, jak jsou v počítačové paměti ukládána čísla větší než 255.
Little endian ukládá méně významný bajt jako první (na nižší adresu). Tato endianita se používá na osobních počítačích s architekturou Intel x86.
Big endian ukládá významnější bajt jako první. Podle normy Unicode je to výchozí volba, pokud není výslovně specifikováno jinak.

Tento atribut má smysl pouze při kódování UTF-16 a UTF-32. Názvy kódování by měly být upřesněny uvedením přípony LE nebo BE, nepovinně oddělené třeba pomlčkou nebo lomítkem: UTF-16/LE, utf32be apod.

Použití BOM

BOM neboli Byte Order Mark je speciální znak, který se může vyskytnout na samém začátku souborů kódovaných v Unicode, a určuje jeho endianitu.

EuroConvertor respektuje výskyt BOM při kódování UTF-16 a UTF-32, nebyla-li jejich endianita výslovně specifikována příponou /LE nebo /BE u názvu vstupního kódování. Pokud přípona chybí a pokud text nezačíná znakem BOM, endianita bude určena autodetekcí.

Samotný znak BOM na začátku vstupního textu je vždy z konverze vynechán. Do výstupního textu bude zapsán pouze tehdy, bylo-li to vyžádáno připojením modifikátoru /BOM k názvu výstupního UTF kódování.
Příklad: euroconv utf-8 utf-16le-bom input.txt output.txt.

Modifikátory vstupního kódování

EuroConvert umí detekovat HTML entity ve vstupním textu a převést je na odpovídající znak. K tomu dochází po připojení modifikátoru /HTML k názvu vstupního kódování.
Obdobný modifikátor /HTM omezí konverzi entit pouze na ty, jejichž hodnota je větší než 127, což znamená, že ASCII entity &, <, >, " projdou konvertorem nezměněny.
Ve výchozím stavu se ignorují všechny HTML entity.

Modifikátory výstupního kódování

Přítomnost modifikátoru /HTML u specifikace výstupního kódu způsobí, že znaky neplatné ve výstupní kódové stránkce budou převedeny na odpovídající hexadecimální HTML entity.

Podobně modifikátor /QM předepisuje, že se neplatné znaky při konverzi nahradí otazníkem ?.

Je-li uveden modifikátor /IGN, neplatné znaky budou ignorovány a vynechány ve výstupním textu.

Není-li použit žádný modifikátor, anebo je-li použit /TRANSL, znaky neexistující ve výstupním kódování se nahrazují transliterací do ASCII znaků.
Transliterace odstraňuje diakritická znaménka ze znaků latinské abecedy, písmena jiných abeced nahrazuje foneticky podobnými znaky latinských písmen, grafické symboly nahrazuje vzhledově podobnými symboly z tabulky ASCII.

Chyby vstupního kódování

Výskyt ilegálního znaku ve vstupním kódování inkrementuje počet vstupních chyb. Za ilegální se považují znaky, které nejsou definovány v proklamovaném vstupním kódování.

Je-li vstupní text prohlášen za kódovaný jako ASCII, kterýkoli bajt s hodnotou mezi 128 a 255 je ilegální.

V 8bitovém kódování OEM a ANSI jsou obvykle využívány všechny pozice. Výjimky jsou vzácné, například jihoevropské kódování ISO-8859-3 deklaruje jako neplatné hodnoty bajtů 165, 174, 190, 195, 208, 227, 240.

V kódováních Unicode jsou definovány znaky s hodnotou codepoint ze základní roviny BMP (Basic Multilingual Plane) v rozashu 0..0xD7FF a 0xE000..0xFFFF, a dále znaky ze Supplementary Planes v rozsahu 0x10000..10FFFF.
Neúplné hodnoty (lichý počet bajtů ve vstupním souboru) a nespárované dvojice surrogate v kódu UTF-16 také zvyšují čítač vstupních chyb. U kódování UTF-8 jsou neplatně zakódované znaky popsány ve Wikipedii (jedná se o chybějící pokračovací bajty, nadbytečně dlouhé zakódování, neplatné hodnoty codepoint).

Chyby výstupního kódování

Čítač výstupních chyb se zvyšuje za každý znak, který nelze převést do zvoleného výstupního kódu. Na tyto ilegální znaky EuroConvertor reaguje jednou za čtyř možností vybranou modifikátorem /IGN, /QM, /HTML nebo /TRANSL, viz výše.

Rekapitulace

Znaky z rozšiřujících rovin Unicode, jako jsou asijské ideogramy a emoji, nejsou definovány v žádných OEM ani ANSI kódováních. Texty obsahující tyto znaky mohou být úspěšně převáděny pouze z jednoho kódování UTF do jiného.

Po ukončení převodu vypisuje EuroConvertor do konzolového okna závěrečnou rekapitulaci. Ta obsahuje pro vstupní i výstupní text název souboru, jeho délku, kódování a počet chyb.

Velikost konvertovaných souborů je omezena na 2 GB.

Konverze je vratná, pokud čítač vstupních i výstupních chyb kódování jsou nulové. Pouze v takovém případě by konvertovaný soubor mohl být převeden zpět do původního kódování bez ztráty informace.

Úspěšnost konverze indikuje EuroConvertor hodnotou Errorlevel takto:
0 ... Úspěšně převedeno, žádné chyby kódu na vstupu ani výstupu.
2 ... Soubor byl konvertován, ale některé znaky nemohly být převedeny. Konverze není bezztrátová.
4 ... Chyba čtení nebo zápisu do souboru, vstupní text nenalezen, plný disk apod.
8 ... Chyba syntaxe, nesprávně zadané parametry.


▲Zpět na začátek▲