OKkonv

 

je konvertor, který umožňuje změnit způsob, jakým je v textovém souboru kódován český nebo slovenský jazyk.

Stručná charakteristika

Syntaxe

OKKONV je řádková utilita určená především pro bezobslužné zpracování v dávkových souborech, všechny potřebné údaje se proto zadávají z příkazové řádky.

Parametry programu OKKONV začínají lomítkem, za kterým následuje rozlišující písmeno (na velikost se nehledí). Případné další znaky až do dalšího lomítka jsou ignorovány. Některé parametry vyžadují zadání hodnoty, například za parametrem /H= se očekává počáteční pozice v souboru, od které se začne konvertovat. Číselné parametry lze zadávat dekadicky nebo hexadecimálně, oddělovací rovnítko není povinné. Všech pět následujících příkladů zadání číselného parametru je syntakticky správných a významově shodných:

/Header=172813   /h172813   -hlavička: 172813   -h0x2A30D    /H2A30Dh

Uvnitř čísla nesmějí být nečíselné znaky (žádné oddělovací mezery). U znakových parametrů přistupuje možnost jejich specifikace zadáním znaku v uvozovkách nebo apostrofech, např. /Z="*". Namísto lomítek mohou parametry začínat i znakem minus.

Při zapsání nedefinovaného parametru, např. /?, se zobrazí stručný přehled povolených parametrů. Povelem OKKONV /P se na systémový výstup vypíše tento podrobný popis programu.

Specifikace konvertovaných souborů

Názvy vstupního a výstupního souboru se zadávají v tomto pořadí jako parametry příkazu OKKONV. Cestu k souborům není nutné uvádět, pak se pracuje v aktuálně nastaveném adresáři. Dlouhé názvy souborů nejsou podporovány. Pokud výstupní soubor již existuje, bude obsluha varována dotazem Výstupní soubor už existuje. Přepsat (A/N) ? Tento interaktivní dotaz lze potlačit parametrem /O.

Nebyly-li názvy souborů zadány, OKKONV pracuje jako filtr, tzn. čte soubor ze systémového vstupu a po převodu jej zapisuje na systémový výstup. Pokud je na příkazové řádce zadán jen jeden soubor, považuje se za vstupní a výsledek jde na systémový výstup. Následující příkazy jsou tedy funkčně shodné:

OKKONV  vstup.exe  vystup.txt
OKKONV <vstup.exe >vystup.txt
Při použití přesměrovacích operátorů < a > je třeba případné doplňující parametry programu OKKONV zadávat před zapsáním prvního přesměrování. Pozor také na to, že při přesměrování výstupu do již existujícího souboru se žádné varovné upozornění nevydává.

OKKONV akceptuje zástupné znaky. Obsahuje-li název vstupního souboru hvězdičku nebo otazník, budou zkonvertovány všechny soubory vyhovující této masce. Na místa zástupných znaků v zadání výstupního souboru se přitom zkopírují znaky z odpovídající pozice vstupního jména. Není-li u výstupního souboru zadána cesta, vytváří se ve stejném adresáři, v jakém leží vstupní soubor. OKKONV zde funguje obdobně jako dosový příkaz REN.

Chceme-li tedy hromadně zkonvertovat soubory do jiného adresáře se zachováním jejich názvů, zadáváme

 OKKONV \SOURCE\*.* \DEST\*.*
Pokud bychom neuvedli cestu do výstupního adresáře, proběhne konverze na místě a zkonvertované soubory přepíší své originály:
 OKKONV \SOURCE\*.* *.*

Při hromadné specifikaci souborů s pomocí * a ? jsou případné další zadané parametry (např. /Overwrite) platné pro všechny soubory vyhovující vstupní masce. Jedinou výjimkou je autodetekce vstupního kódu, která se provádí pro každý soubor zvlášť.

Příklad: Nechť adresář C:\TXT\DOS obsahuje soubory OKKONV.TXT, OKDUMP.TXT a OKSORT.TXT.

 OKKONV C:\TXT\DOS\*.TXT C:\TXT\WIN\*.*
vytvoří soubory OKKONV.TXT, OKDUMP.TXT a OKSORT.TXT v adresáři C:\TXT\WIN

 OKKONV C:\TXT\DOS\*.TXT *.*
vytvoří soubory OKKONV.TXT, OKDUMP.TXT a OKSORT.TXT v adresáři C:\TXT\DOS

 OKKONV C:\TXT\DOS\*.*  C:\TXT\WIN\OKDOC.TXT
převádí každý ze vstupních souborů na OKDOC.TXT v adresáři C:\TXT\WIN, tedy postupně jej přepisuje. Pokud bychom chtěli spojit zkonvertované soubory do jednoho, správný příkaz je
 OKKONV C:\TXT\DOS\*.* >> C:\TXT\WIN\OKDOC.TXT

Další příklady hromadné konverze:

 OKKONV *.TXT *.*
konverze všech textů na místě se zachováním původních názvů

 OKKONV D:\BBS\TXT\CZKAM\*.ANS D:\BBS\TXT\CZDOS\*.ASC
překódování všech souborů *.ANS se změnou jejich přípony

 OKKONV L??P*.*  DR*.*
V posledním príkladu bude soubor LISP1.DOC konverzí prejmenován na DRSP1.DOC, soubor LOOP.BAK na DROP.BAK atd.

Není-li zadán název výstupního souboru, vypisuje se zkonvertovaný text na standardní výstup, obdobně jako dosový příkaz TYPE.

OKKONV *.TXT | MORE
tedy vypíše všechny textové soubory na obrazovku, přesměrováním do MORE je zajištěno pozastavení po zaplnění obrazovky.

OKKONV nezpracovává soubory systémové a skryté, tj. s atributy System a Hidden.

Podporované kódy

/ISO-8859-2
Normalizované kódování češtiny ve světě Unixu, Internetu aj. Semigrafika je v některých implementacích (CZ Linux) doplněna na pozice 129..159.
/Kamenických (neoficiálně CP895)
obsahuje všechny semigrafické symboly originálního IBM-PC, část řecké abecedy a některé matematické symboly. Je poměrně čitelný i na neupravených videoadaptérech a tiskárnách s americkou kódovou stránkou CP437.
/Latin2 CP852
kódování podporované v DOSu Microsoftem a IBM. Nemá některé semigrafické symboly ani řeckou abecedu, místo toho nabízí znaky maďarské, polské, rumunské, chorvatské a srbské abecedy.
/Windows CP1250
podobně jako Latin2 obsahuje znaky pro balkánské jazyky, ale zcela chybí semigrafika a další užitečné symboly. Až na znaky ľĽšŠťŤžŽ a několik dalších se shoduje s ISO-8859-2.
/MacCE 10029
kódová stránka Macintosh Central Europe pro počítače Apple.
/DOS OEM (CP437)
Obsahuje pouze ty české znaky, které mají shodný kód v Latin2 i Kamenických - áäÄéÉíóôöÖúüÜ. U ostatních písmen je diakritika odstraněna. Soubor v tomto kódování bude v DOSu vypadat stejně bez ohledu na to, má-li uživatel instalovánu podporu Kamenických, Latin2 či žádnou.
/ASCII 7bit
Soubor v tomto kódování obsahuje pouze znaky z první poloviny tabulky ASCII, diakritická znaménka jsou odstraněna, semigrafika je převedena na podobné znaky ze základní sady.

Poslední dvě kódování /DOS a /ASCII neumožňují uchovávat české texty bez ztráty informace, jsou proto určena pro výstup na zařízení neumožňující zobrazení české diakritiky, jako např. některé zahraniční tiskárny. Kódování KOI-8 ani Unicode není podporováno.

Nastavení kódu

Požadovaný směr konverze se zadává uvedením dvou parametrů specifikujících vstupní a výstupní kódovou stránku, v tomto pořadí. Pokud bychom zadali jen jeden parametr určující kód, bude považován za vstupní a text se převede do implicitního kódování.

Defaultní výstupní kód je buď /Kamenických nebo /Latin2, OKKONV ho určuje analýzou fontu nahraného ve videoadaptéru VGA.

Pokud není zadán ani první kód, nastupuje autodetekce pomocí statistické analýzy četnosti diakritických znaků v celém souboru. U krátkých a atypických textů tato metoda ovšem není zcela spolehlivá. Pokud by vstupní soubor obsahoval např. znak 159, může to být buď písmeno "ť" v kódu Kamenických, nebo "č" v kódu Latin2, případně ještě polské "z s čárkou" v kódu Windows. OKKONV se v tomto případě přikloní k variantě Latin2, neboť "č" je v českých textech frekventovanější. Obdobně jsou zpracovány další znaky, přičemž výskyt obvyklých písmen íářěžčéšýůÍÁŘĚŽČÉŠÝŮ pravděpodobnost daného kódu zvyšuje, zatímco balkánské znaky, samostatná diakritická znaménka a podobné exoty pravděpodobnost naopak snižují. Na závěr se vybere kód s nejvyšší dosaženou pravděpodobností a ten se pak použije jako vstupní pro daný soubor. Autodetekce pracuje pouze s kódy /ASC, /ISO, /KAM, /LAT a /WIN.

Pokud bychom požadovali zjišťovat vstupní kód autodetekcí a přitom specifikovat výstupní kódování, místo vstupního (prvního) kódu lze zadat parametr /T.

Služební a chybová hlášení programu OKKONV jsou vypisována na standardní chybový výstup (lze je potlačit parametrem /N nebo /S). Pokud je druhým parametrem zvolen výstupní kód /KAM nebo /LAT, je tím určeno i kódování pro služební hlášení, jinak se jejich kód určuje analýzou fontu VGA. Pokud bychom na příkazovém řádku zadali třetí kód, přepíše výstupní kód specifikovaný druhým parametrem, ale kód služebních zpráv určený druhým kódovým parametrem zůstane zachován.

Příklady:         vstup          výstup          chybové zprávy
 OKKONV          autodetekce      VGA               VGA
 OKKONV /L       Latin2           VGA               VGA
 OKKONV /W /L    Windows         Latin2            Latin2
 OKKONV /T /A    autodetekce     ASCII              VGA
 OKKONV /M /K    Macintosh       Kamenických       Kamenických
 OKKONV /K /L /W Kamenických     Windows           Latin2

Parametr /T má ještě další funkci: umožňuje specifikovat vlastní konverzní tabulku. Její název pak musí být oddělen rovnítkem nebo dvojtečkou, např.

OKKONV  /T=MYTABLE.BIN
. Na rozdíl od tabulek vestavěných v OKKONV se dají pomocí externího souboru konvertovat i znaky s ASCII hodnotou menší než 128. Uživatelská tabulka se hodí pro konverzi zde nepodporovaných kódových stránek, pro převod malých písmen na velká apod. Její formát je jednoduchý: na pozici odpovídající vstupnímu znaku je umístěn odpovídající bajt ve výstupním kódu. Délka souboru tedy musí být přesně 256.

Kódová tabulka

OKKONV převádí znaky podle pravidel uvedených v následující tabulce. Řada cizokrajných znaků existuje pouze v některých kódových stránkách. Pokud se znak ve výstupním kódu nevyskytuje, je nouzově nahrazen podobným znakem s hodnotou ASCII < 128. Existuje-li dokonalý ekvivalent, je znak v převodní tabulce zapsán jako hexadecimální hodnota, nouzové náhrady jsou vyjádřeny ASCII znakem v apostrofech. Například malé písmeno "a" s kroužkem (podle standardu Unicode kód 00E2h LATIN SMALL LETTER A WITH CIRCUMFLEX) má v kódech ISO-8859-2 a Windows CP1250 hodnotu 0E2h, v kódu Latin2 hodnotu 083h a do ostatních kódů se převádí jako obyčejné písmeno 'a', tedy 061h.

Nouzové náhrady písmen jsou vytvořeny odstraněním diakritiky, typografické uvozovky jsou nahrazovány jednoduchým nebo dvojitým apostrofem, pomlčky znakem minus "-", rámečkové znaky jsou nahrazovány pomocí "-","+","|", bloky a výplně hvězdičkou "*". 0 znamená, že náhrada není a bude proto použit znak definovaný parametrem /Z=, což je implicitně tilda "~".

Odlišně od specifikace konsorcia Unicode jsou převáděny rámečkové znaky v kódu ISO-8859-2, které se ve shodě s českými fonty v Linuxu konvertují na pozice 129 až 159. Znak měnové jednotky Euro je konvertován i do kódových stránek Kamenických a Latin2.

ASC DOS ISO KAM LAT MAC WIN UNICODE GLYPH NAME
000 000 000 000 000 000 000 0000 NULL
001 001 001 001 001 001 001 0001 START OF HEADING
002 002 002 002 002 002 002 0002 START OF TEXT
003 003 003 003 003 003 003 0003 END OF TEXT
004 004 004 004 004 004 004 0004 END OF TRANSMISSION
005 005 005 005 005 005 005 0005 ENQUIRY
006 006 006 006 006 006 006 0006 ACKNOWLEDGE
007 007 007 007 007 007 007 0007 BELL
008 008 008 008 008 008 008 0008 BACKSPACE
00E 00E 00E 00E 00E 00E 00E 000E SHIFT OUT
00F 00F 00F 00F 00F 00F 00F 000F SHIFT IN
010 010 010 010 010 010 010 0010 DATA LINE ESCAPE
011 011 011 011 011 011 011 0011 DEVICE CONTROL 1 (X-ON)
012 012 012 012 012 012 012 0012 DEVICE CONTROL 2
013 013 013 013 013 013 013 0013 DEVICE CONTROL 3 (X-OFF)
014 014 014 014 014 014 014 0014 DEVICE CONTROL 4
015 015 015 015 015 015 015 0015 NEGATIVE ACKNOWLEDGE
016 016 016 016 016 016 016 0016 SYNCHRONOUS IDLE
017 017 017 017 017 017 017 0017 END OF TRANSMIT BLOCK
018 018 018 018 018 018 018 0018 CANCEL
019 019 019 019 019 019 019 0019 END OF MEDIUM
01A 01A 01A 01A 01A 01A 01A 001A SUBSTITUTE
01B 01B 01B 01B 01B 01B 01B 001B ESCAPE
01C 01C 01C 01C 01C 01C 01C 001C FILE SEPARATOR
01D 01D 01D 01D 01D 01D 01D 001D GROUP SEPARATOR
01E 01E 01E 01E 01E 01E 01E 001E RECORD SEPARATOR
01F 01F 01F 01F 01F 01F 01F 001F UNIT SEPARATOR
07F 07F 07F 07F 07F 07F 07F 007F DELETE
009 009 009 009 009 009 009 0009 HORIZONTAL TAB
00B 00B 00B 00B 00B 00B 00B 000B VERTICAL TAB
00D 00D 00D 00D 00D 00D 00D 000D CARRIAGE RETURN
00A 00A 00A 00A 00A 00A 00A 000A LINE FEED
00C 00C 00C 00C 00C 00C 00C 000C FORM FEED
020 020 020 020 020 020 020 0020 SPACE
' ' 0FF 0A0 0FF 0FF 0CA 0A0 00A0 NO-BREAK SPACE
  0   0   0 0E0   0   0   0 03B1 GREEK SMALL LETTER ALPHA
061 061 061 061 061 061 061 0061 LATIN SMALL LETTER A
041 041 041 041 041 041 041 0041 LATIN CAPITAL LETTER A
'a' 0A0 0E1 0A0 0A0 087 0E1 00E1 LATIN SMALL LETTER A WITH ACUTE
'A' 'A' 0C1 08F 0B5 0E7 0C1 00C1 LATIN CAPITAL LETTER A WITH ACUTE
'a' 'a' 'a' 'a' 'a' 082 'a' 0101 LATIN SMALL LETTER A WITH MACRON
'A' 'A' 'A' 'A' 'A' 081 'A' 0100 LATIN CAPITAL LETTER A WITH MACRON
'a' 084 0E4 084 084 08A 0E4 00E4 LATIN SMALL LETTER A WITH DIAERESIS
'A' 08E 0C4 08E 08E 080 0C4 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
'a' 'a' 0E2 'a' 083 'a' 0E2 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
'A' 'A' 0C2 'A' 0B6 'A' 0C2 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
'a' 'a' 0E3 'a' 0C7 'a' 0E3 0103 LATIN SMALL LETTER A WITH BREVE
'A' 'A' 0C3 'A' 0C6 'A' 0C3 0102 LATIN CAPITAL LETTER A WITH BREVE
'a' 'a' 0B1 'a' 0A5 088 0B9 0105 LATIN SMALL LETTER A WITH OGONEK
'A' 'A' 0A1 'A' 0A4 084 0A5 0104 LATIN CAPITAL LETTER A WITH OGONEK
062 062 062 062 062 062 062 0062 LATIN SMALL LETTER B
042 042 042 042 042 042 042 0042 LATIN CAPITAL LETTER B
063 063 063 063 063 063 063 0063 LATIN SMALL LETTER C
043 043 043 043 043 043 043 0043 LATIN CAPITAL LETTER C
'c' 'c' 0E7 'c' 087 'c' 0E7 00E7 LATIN SMALL LETTER C WITH CEDILLA
'C' 'C' 0C7 'C' 080 'C' 0C7 00C7 LATIN CAPITAL LETTER C WITH CEDILLA
'c' 'c' 0E6 'c' 086 08D 0E6 0107 LATIN SMALL LETTER C WITH ACUTE
'C' 'C' 0C6 'C' 08F 08C 0C6 0106 LATIN CAPITAL LETTER C WITH ACUTE
'c' 'c' 0E8 087 09F 08B 0E8 010D LATIN SMALL LETTER C WITH CARON
'C' 'C' 0C8 080 0AC 089 0C8 010C LATIN CAPITAL LETTER C WITH CARON
  0   0   0 0EB   0   0   0 03B4 GREEK SMALL LETTER DELTA
064 064 064 064 064 064 064 0064 LATIN SMALL LETTER D
044 044 044 044 044 044 044 0044 LATIN CAPITAL LETTER D
'd' 'd' 0EF 083 0D4 093 0EF 010F LATIN SMALL LETTER D WITH CARON
'D' 'D' 0CF 085 0D2 091 0CF 010E LATIN CAPITAL LETTER D WITH CARON
'd' 'd' 0F0 'd' 0D0 'd' 0F0 0111 LATIN SMALL LETTER D WITH STROKE
'D' 'D' 0D0 'D' 0D1 'D' 0D0 0110 LATIN CAPITAL LETTER D WITH STROKE
065 065 065 065 065 065 065 0065 LATIN SMALL LETTER E
045 045 045 045 045 045 045 0045 LATIN CAPITAL LETTER E
'e' 'e' 'e' 'e' 'e' 098 'e' 0117 LATIN SMALL LETTER E WITH DOT ABOVE
'E' 'E' 'E' 'E' 'E' 096 'E' 0116 LATIN CAPITAL LETTER E WITH DOT ABOVE
'e' 082 0E9 082 082 08E 0E9 00E9 LATIN SMALL LETTER E WITH ACUTE
'E' 090 0C9 090 090 083 0C9 00C9 LATIN CAPITAL LETTER E WITH ACUTE
'e' 'e' 0EC 088 0D8 09E 0EC 011B LATIN SMALL LETTER E WITH CARON
'E' 'E' 0CC 089 0B7 09D 0CC 011A LATIN CAPITAL LETTER E WITH CARON
'e' 'e' 'e' 'e' 'e' 095 'e' 0112 LATIN SMALL LETTER E WITH MACRON
'E' 'E' 'E' 'E' 'E' 094 'E' 0112 LATIN CAPITAL LETTER E WITH MACRON
'e' 'e' 0EB 'e' 089 'e' 0EB 00EB LATIN SMALL LETTER E WITH DIAERESIS
'E' 'E' 0CB 'E' 0D3 'E' 0CB 00CB LATIN CAPITAL LETTER E WITH DIAERESIS
'e' 'e' 0EA 'e' 0A9 0AB 0EA 0119 LATIN SMALL LETTER E WITH OGONEK
'E' 'E' 0CA 'E' 0A8 0A2 0CA 0118 LATIN CAPITAL LETTER E WITH OGONEK
  0   0   0 0ED   0   0   0 03C6 GREEK SMALL LETTER PHI
  0   0   0 0E8   0   0   0 03A6 GREEK CAPITAL LETTER PHI
066 066 066 066 066 066 066 0066 LATIN SMALL LETTER F
046 046 046 046 046 046 046 0046 LATIN CAPITAL LETTER F
  0   0   0 0E2   0   0   0 0393 GREEK CAPITAL LETTER GAMMA
067 067 067 067 067 067 067 0067 LATIN SMALL LETTER G
047 047 047 047 047 047 047 0047 LATIN CAPITAL LETTER G
'g' 'g' 'g' 'g' 'g' 0AE 'g' 0123 LATIN SMALL LETTER G WITH CEDILLA
'G' 'G' 'G' 'G' 'G' 0FE 'G' 0122 LATIN CAPITAL LETTER G WITH CEDILLA
068 068 068 068 068 068 068 0068 LATIN SMALL LETTER H
048 048 048 048 048 048 048 0048 LATIN CAPITAL LETTER H
069 069 069 069 069 069 069 0069 LATIN SMALL LETTER I
049 049 049 049 049 049 049 0049 LATIN CAPITAL LETTER I
'i' 0A1 0ED 0A1 0A1 092 0ED 00ED LATIN SMALL LETTER I WITH ACUTE
'I' 'I' 0CD 08B 0D6 0EA 0CD 00CD LATIN CAPITAL LETTER I WITH ACUTE
'i' 'i' 0EE 'i' 08C 'i' 0EE 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
'I' 'I' 0CE 'I' 0D7 'I' 0CE 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
'i' 'i' 'i' 'i' 'i' 0B4 'i' 012B LATIN SMALL LETTER I WITH MACRON
'I' 'I' 'I' 'I' 'I' 0B1 'I' 012A LATIN CAPITAL LETTER I WITH MACRON
'i' 'i' 'i' 'i' 'i' 0B0 'i' 012F LATIN SMALL LETTER I WITH OGONEK
'I' 'I' 'I' 'I' 'I' 0AF 'I' 012E LATIN CAPITAL LETTER I WITH OGONEK
06A 06A 06A 06A 06A 06A 06A 006A LATIN SMALL LETTER J
04A 04A 04A 04A 04A 04A 04A 004A LATIN CAPITAL LETTER J
06B 06B 06B 06B 06B 06B 06B 006B LATIN SMALL LETTER K
04B 04B 04B 04B 04B 04B 04B 004B LATIN CAPITAL LETTER K
'k' 'k' 'k' 'k' 'k' 0FA 'k' 0137 LATIN SMALL LETTER K WITH CEDILLA
'K' 'K' 'K' 'K' 'K' 0B5 'K' 0136 LATIN CAPITAL LETTER K WITH CEDILLA
06C 06C 06C 06C 06C 06C 06C 006C LATIN SMALL LETTER L
04C 04C 04C 04C 04C 04C 04C 004C LATIN CAPITAL LETTER L
'l' 'l' 0E5 08D 092 0BE 0E5 013A LATIN SMALL LETTER L WITH ACUTE
'L' 'L' 0C5 08A 091 0BD 0C5 0139 LATIN CAPITAL LETTER L WITH ACUTE
'l' 'l' 0B5 08C 096 0BC 0BE 013E LATIN SMALL LETTER L WITH CARON
'L' 'L' 0A5 09C 095 0BB 0BC 013D LATIN CAPITAL LETTER L WITH CARON
'l' 'l' 0B3 'l' 088 0B8 0B3 0142 LATIN SMALL LETTER L WITH STROKE
'L' 'L' 0A3 'L' 09D 0FC 0A3 0141 LATIN CAPITAL LETTER L WITH STROKE
'l' 'l' 'l' 'l' 'l' 0BA 'l' 013C LATIN SMALL LETTER L WITH CEDILLA
'L' 'L' 'L' 'L' 'L' 0B9 'L' 013B LATIN CAPITAL LETTER L WITH CEDILLA
  0   0   0 0E6   0   0 0B5 00B5 MICRO SIGN
06D 06D 06D 06D 06D 06D 06D 006D LATIN SMALL LETTER M
04D 04D 04D 04D 04D 04D 04D 004D LATIN CAPITAL LETTER M
06E 06E 06E 06E 06E 06E 06E 006E LATIN SMALL LETTER N
04E 04E 04E 04E 04E 04E 04E 004E LATIN CAPITAL LETTER N
'n' 'n' 0F1 'n' 0E4 0C4 0F1 0144 LATIN SMALL LETTER N WITH ACUTE
'N' 'N' 0D1 'N' 0E3 0C1 0D1 0143 LATIN CAPITAL LETTER N WITH ACUTE
'n' 'n' 0F2 0A4 0E5 0CB 0F2 0148 LATIN SMALL LETTER N WITH CARON
'N' 'N' 0D2 0A5 0D5 0C5 0D2 0147 LATIN CAPITAL LETTER N WITH CARON
'n' 'n' 'n' 'n' 'n' 0C0 'n' 0146 LATIN SMALL LETTER N WITH CEDILLA
'N' 'N' 'N' 'N' 'N' 0BF 'N' 0145 LATIN CAPITAL LETTER N WITH CEDILLA
  0   0   0 0EA   0   0   0 03A9 GREEK CAPITAL LETTER OMEGA
06F 06F 06F 06F 06F 06F 06F 006F LATIN SMALL LETTER O
04F 04F 04F 04F 04F 04F 04F 004F LATIN CAPITAL LETTER O
'o' 0A2 0F3 0A2 0A2 097 0F3 00F3 LATIN SMALL LETTER O WITH ACUTE
'O' 'O' 0D3 095 0E0 0EE 0D3 00D3 LATIN CAPITAL LETTER O WITH ACUTE
'o' 093 0F4 093 093 099 0F4 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
'O' 'O' 0D4 0A7 0E2 0EF 0D4 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
'o' 'o' 'o' 'o' 'o' 0D8 'o' 014D LATIN SMALL LETTER O WITH MACRON
'O' 'O' 'O' 'O' 'O' 0CF 'O' 014C LATIN CAPITAL LETTER O WITH MACRON
'o' 094 0F6 094 094 09A 0F6 00F6 LATIN SMALL LETTER O WITH DIAERESIS
'O' 099 0D6 099 099 085 0D6 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
'o' 'o' 0F5 'o' 08B 0CE 0F5 0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
'O' 'O' 0D5 'O' 08A 0CC 0D5 0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
'o' 'o' 'o' 'o' 'o' 09B 'o' 00F5 LATIN SMALL LETTER O WITH TILDE
'O' 'O' 'O' 'O' 'O' 0CD 'O' 00D5 LATIN CAPITAL LETTER O WITH TILDE
  0   0   0 0E3   0   0   0 03C0 GREEK SMALL LETTER PI
070 070 070 070 070 070 070 0070 LATIN SMALL LETTER P
050 050 050 050 050 050 050 0050 LATIN CAPITAL LETTER P
071 071 071 071 071 071 071 0071 LATIN SMALL LETTER Q
051 051 051 051 051 051 051 0051 LATIN CAPITAL LETTER Q
072 072 072 072 072 072 072 0072 LATIN SMALL LETTER R
052 052 052 052 052 052 052 0052 LATIN CAPITAL LETTER R
'r' 'r' 0E0 0AA 0EA 0DA 0E0 0155 LATIN SMALL LETTER R WITH ACUTE
'R' 'R' 0C0 0AB 0E8 0D9 0C0 0154 LATIN CAPITAL LETTER R WITH ACUTE
'r' 'r' 'r' 'r' 'r' 0E0 'r' 0157 LATIN SMALL LETTER R WITH CEDILLA
'R' 'R' 'R' 'R' 'R' 0DF 'R' 0156 LATIN CAPITAL LETTER R WITH CEDILLA
'r' 'r' 0F8 0A9 0FD 0DE 0F8 0159 LATIN SMALL LETTER R WITH CARON
'R' 'R' 0D8 09E 0FC 0DB 0D8 0158 LATIN CAPITAL LETTER R WITH CARON
073 073 073 073 073 073 073 0073 LATIN SMALL LETTER S
053 053 053 053 053 053 053 0053 LATIN CAPITAL LETTER S
's' 's' 0B6 's' 098 0E6 09C 015B LATIN SMALL LETTER S WITH ACUTE
'S' 'S' 0A6 'S' 097 0E5 08C 015A LATIN CAPITAL LETTER S WITH ACUTE
's' 's' 0BA 's' 0AD 's' 0BA 015F LATIN SMALL LETTER S WITH CEDILLA
'S' 'S' 0AA 'S' 0B8 'S' 0AA 015E LATIN CAPITAL LETTER S WITH CEDILLA
  0 0E1 0DF 0E1 0E1 0A7 0DF 00DF LATIN SMALL LETTER SHARP S
  0   0   0 0E5   0   0   0 03C3 GREEK SMALL LETTER SIGMA
  0   0   0 0E4   0   0   0 03A3 GREEK CAPITAL LETTER SIGMA
's' 's' 0B9 0A8 0E7 0E4 09A 0161 LATIN SMALL LETTER S WITH CARON
'S' 'S' 0A9 09B 0E6 0E1 08A 0160 LATIN CAPITAL LETTER S WITH CARON
  0   0   0 0E7   0   0   0 03C4 GREEK SMALL LETTER TAU
  0   0   0 0E9   0   0   0 0398 GREEK CAPITAL LETTER THETA
074 074 074 074 074 074 074 0074 LATIN SMALL LETTER T
054 054 054 054 054 054 054 0054 LATIN CAPITAL LETTER T
't' 't' 0BB 09F 09C 0E9 09D 0165 LATIN SMALL LETTER T WITH CARON
'T' 'T' 0AB 086 09B 0E8 08D 0164 LATIN CAPITAL LETTER T WITH CARON
't' 't' 0FE 't' 0EE 't' 0FE 0163 LATIN SMALL LETTER T WITH CEDILLA
'T' 'T' 0DE 'T' 0DD 'T' 0DE 0162 LATIN CAPITAL LETTER T WITH CEDILLA
075 075 075 075 075 075 075 0075 LATIN SMALL LETTER U
055 055 055 055 055 055 055 0055 LATIN CAPITAL LETTER U
'u' 0A3 0FA 0A3 0A3 09C 0FA 00FA LATIN SMALL LETTER U WITH ACUTE
'U' 'U' 0DA 097 0E9 0F2 0DA 00DA LATIN CAPITAL LETTER U WITH ACUTE
'u' 081 0FC 081 081 09F 0FC 00FC LATIN SMALL LETTER U WITH DIAERESIS
'U' 09A 0DC 09A 09A 086 0DC 00DC LATIN CAPITAL LETTER U WITH DIAERESIS
'u' 'u' 0FB 'u' 0FB 0F5 0FB 0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
'U' 'U' 0DB 'U' 0EB 0F4 0DB 0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
'u' 'u' 0F9 096 085 0F3 0F9 016F LATIN SMALL LETTER U WITH RING ABOVE
'U' 'U' 0D9 0A6 0DE 0F1 0D9 016E LATIN CAPITAL LETTER U WITH RING ABOVE
'u' 'u' 'u' 'u' 'u' 0F0 'u' 016B LATIN SMALL LETTER U WITH MACRON
'U' 'U' 'U' 'U' 'U' 0ED 'U' 016A LATIN CAPITAL LETTER U WITH MACRON
'u' 'u' 'u' 'u' 'u' 0F7 'u' 0173 LATIN SMALL LETTER U WITH OGONEK
'U' 'U' 'U' 'U' 'U' 0F6 'U' 0172 LATIN CAPITAL LETTER U WITH OGONEK
076 076 076 076 076 076 076 0076 LATIN SMALL LETTER V
056 056 056 056 056 056 056 0056 LATIN CAPITAL LETTER V
077 077 077 077 077 077 077 0077 LATIN SMALL LETTER W
057 057 057 057 057 057 057 0057 LATIN CAPITAL LETTER W
078 078 078 078 078 078 078 0078 LATIN SMALL LETTER X
058 058 058 058 058 058 058 0058 LATIN CAPITAL LETTER X
079 079 079 079 079 079 079 0079 LATIN SMALL LETTER Y
059 059 059 059 059 059 059 0059 LATIN CAPITAL LETTER Y
'y' 'y' 0FD 098 0EC 0F9 0FD 00FD LATIN SMALL LETTER Y WITH ACUTE
'Y' 'Y' 0DD 09D 0ED 0F8 0DD 00DD LATIN CAPITAL LETTER Y WITH ACUTE
07A 07A 07A 07A 07A 079 07A 007A LATIN SMALL LETTER Z
05A 05A 05A 05A 05A 059 05A 005A LATIN CAPITAL LETTER Z
'z' 'z' 0BF 'z' 0BE 0FD 0BF 017C LATIN SMALL LETTER Z WITH DOT ABOVE
'Z' 'Z' 0AF 'Z' 0BD 0FB 0AF 017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
'z' 'z' 0BC 'z' 0AB 090 09F 017A LATIN SMALL LETTER Z WITH ACUTE
'Z' 'Z' 0AC 'Z' 08D 08F 08F 0179 LATIN CAPITAL LETTER Z WITH ACUTE
'z' 'z' 0BE 091 0A7 0EC 09E 017E LATIN SMALL LETTER Z WITH CARON
'Z' 'Z' 0AE 092 0A6 0EB 08E 017D LATIN CAPITAL LETTER Z WITH CARON
030 030 030 030 030 030 030 0030 DIGIT ZERO
031 031 031 031 031 031 031 0031 DIGIT ONE
032 032 032 032 032 032 032 0032 DIGIT TWO
033 033 033 033 033 033 033 0033 DIGIT THREE
034 034 034 034 034 034 034 0034 DIGIT FOUR
035 035 035 035 035 035 035 0035 DIGIT FIVE
036 036 036 036 036 036 036 0036 DIGIT SIX
037 037 037 037 037 037 037 0037 DIGIT SEVEN
038 038 038 038 038 038 038 0038 DIGIT EIGHT
039 039 039 039 039 039 039 0039 DIGIT NINE
02E 02E 02E 02E 02E 02E 02E 002E FULLSTOP
  0   0   0   0   0 0C9 085 2026 HORIZONTAL ELLIPSIS
02C 02C 02C 02C 02C 02C 02C 002C COMMA
03B 03B 03B 03B 03B 03B 03B 003B SEMICOLON
03F 03F 03F 03F 03F 03F 03F 003F QUESTION MARK
021 021 021 021 021 021 021 0021 EXCLAMATION MARK
  0   0   0 0AD   0   0   0 00A1 INVERTED EXCLAMATION MARK
03A 03A 03A 03A 03A 03A 03A 003A COLON
02D 02D 02D 02D 02D 02D 02D 002D HYPHEN-MINUS
'-' '-' 0AD '-' 0F0 '-' 0AD 00AD SOFT HYPHEN
'-' '-' '-' '-' '-' 0D0 096 2013 EN DASH
'-' '-' 090 '-' '-' 0D1 097 2014 EM DASH
02F 02F 02F 02F 02F 02F 02F 002F SOLIDUS
05C 05C 05C 05C 05C 05C 05C 005C REVERSE SOLIDUS
07C 07C 07C 07C 07C 07C 07C 007C VERTICAL LINE
'|' '|' '|' '|' '|' '|' 0A6 00A6 BROKEN BAR
028 028 028 028 028 028 028 0028 LEFT PARENTHESIS
029 029 029 029 029 029 029 0029 RIGHT PARENTHESIS
05B 05B 05B 05B 05B 05B 05B 005B LEFT SQUARE BRACKET
05D 05D 05D 05D 05D 05D 05D 005D RIGHT SQUARE BRACKET
07B 07B 07B 07B 07B 07B 07B 007B LEFT CURLY BRACKET
07D 07D 07D 07D 07D 07D 07D 007D RIGHT CURLY BRACKET
026 026 026 026 026 026 026 0026 AMPERSAND
025 025 025 025 025 025 025 0025 PERCENT SIGN
  0   0   0   0   0   0 089 2030 PER MILLE SIGN
023 023 023 023 023 023 023 0023 NUMBER SIGN
  0   0 0A4   0 0CF   0 0A4 00A4 CURRENCY SIGN
024 024 024 024 024 024 024 0024 DOLLAR SIGN
  0   0 080 0EE 0F2   0 080 20AC EURO SIGN
  0   0   0   0   0 0A3   0 00A3 POUND SIGN
03C 03C 03C 03C 03C 03C 03C 003C LESS-THAN SIGN
03E 03E 03E 03E 03E 03E 03E 003E GREATHER-THAN SIGN
  0   0   0 0F3   0 0B2   0 2264 LESS-THAN OR EQUAL TO
  0   0   0 0F2   0 0B3   0 2265 GREATER-THAN OR EQUAL TO
  0   0   0 0F7   0   0   0 2248 ALMOST EQUAL TO
  0   0   0   0   0 0AD   0 2260 NOT EQUAL TO
03D 03D 03D 03D 03D 03D 03D 003D EQUALS SIGN
  0   0   0 0F0   0   0   0 2261 IDENTICAL TO
02B 02B 02B 02B 02B 02B 02B 002B PLUS SIGN
  0   0   0 0F1   0   0 0B1 00B1 PLUS-MINUS SIGN
02A 02A 02A 02A 02A 02A 02A 002A ASTERISK
  0   0 0D7   0 09E   0 0D7 00D7 MULTIPLICATION SIGN
  0 0F6 0F7 0F6 0F6 0D6 0F7 00F7 DIVISION SIGN
  0   0   0 0FD   0   0   0 00B2 SUPERSCRIPT TWO
  0   0   0 0FC   0   0   0 207F SUPERSCRIPT LATIN SMALL LETTER N
  0 0F8 0B0 0F8 0F8 0A1 0B0 00B0 DEGREE SIGN
  0   0   0 0AC   0   0   0 00BC VULGAR FRACTION ONE QUARTER
  0   0   0   0   0 0C6   0 2206 INCREMENT
  0   0   0 0FB   0 0C3   0 221A SQUARE ROOT
  0   0   0 0EC   0   0   0 221E INFINITY
  0   0   0   0 0AA 0C2 0AC 00AC NOT SIGN
  0   0   0 0EF   0   0   0 2229 INTERSECTION
  0   0   0   0   0 0B7   0 2211 N-ARY SUMMATION
  0   0   0   0   0 0B6   0 2202 PARTIAL DIFFERENTIAL
  0   0   0 0F4   0   0   0 2320 TOP HALF INTEGRAL
  0   0   0 0F5   0   0   0 2321 BOTTOM HALF INTEGRAL
027 027 027 027 027 027 027 0027 APOSTROPHE
060 060 060 060 060 060 060 0060 GRAVE ACCENT
022 022 022 022 022 022 022 0022 QUOTATION MARK
"'" "'" "'" "'" "'" 0D4 091 2018 LEFT SINGLE QUOTATION MARK
"'" "'" "'" "'" "'" 0D5 092 2019 RIGHT SINGLE QUOTATION MARK
"'" "'" "'" "'" "'" 0E2 082 201A SINGLE LOW-9 QUOTATION MARK
'"' '"' '"' '"' '"' 0E3 084 201E DOUBLE LOW-9 QUOTATION MARK
'"' '"' '"' '"' '"' 0D2 093 201C LEFT DOUBLE QUOTATION MARK
'"' '"' '"' '"' '"' 0D3 094 201D RIGHT DOUBLE QUOTATION MARK
"'" "'" "'" "'" "'" 0DC 08B 2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
"'" "'" "'" "'" "'" 0DD 09B 203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
'"' 0AE '"' 0AE 0AE 0C7 0AB 00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
'"' 0AF '"' 0AF 0AF 0C8 0BB 00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
05F 05F 05F 05F 05F 05F 05F 005F LOW LINE
040 040 040 040 040 040 040 0040 COMMERCIAL AT
  0   0   0   0   0 0A9 0A9 00A9 COPYRIGHT SIGN
  0   0   0   0   0 0A8 0AE 00AE REGISTERED SIGN
  0   0   0   0   0 0AA 099 2122 TRADE MARK SIGN
  0   0   0   0   0 0A6 0B6 00B6 PILCROW SIGN
  0   0 0A7   0 0F5 0A4 0A7 00A7 SECTION SIGN (PARAGRAPH)
  0   0   0   0   0 0D7   0 25CA LOZENGE
07E 07E 07E 07E 07E 07E 07E 007E TILDE
  0   0 0FF   0 0FA   0 0FF 02D9 DOT ABOVE
  0   0 0B4   0 0EF   0 0B4 00B4 ACUTE ACCENT
05E 05E 05E 05E 05E 05E 05E 005E CIRCUMFLEX ACCENT
  0   0 0A2   0 0F4   0 0A2 02D8 BREVE
  0   0 0B7   0 0F3 0FF 0A1 02C7 CARON
  0   0 0A8   0 0F9 0AC 0A8 00A8 DIAERESIS
  0   0 0BD   0 0F1   0 0BD 02DD DOUBLE ACUTE ACCENT
  0   0 0B2   0   0   0 0B2 02DB OGONEK
  0   0 0B8   0 0F7   0 0B8 00B8 CEDILLA
  0   0   0   0   0 0A0 086 2020 DAGGER
  0   0   0   0   0   0 087 2021 DOUBLE DAGGER
  0   0   0 0FA   0   0 0B7 00B7 MIDDLE DOT
  0   0   0 0F9   0   0   0 2219 BULLET OPERATOR
  0   0   0   0   0 0A5 095 2022 BULLET
  0 0FE   0 0FE 0FE   0   0 25A0 BLACK SQUARE
'*' '*' '*' 0DD '*' '*' '*' 258C LEFT HALF BLOCK
'*' '*' '*' 0DE '*' '*' '*' 2590 RIGHT HALF BLOCK
'*' 0DF '*' 0DF 0DF '*' '*' 2580 UPPER HALF BLOCK
'*' 0DC '*' 0DC 0DC '*' '*' 2584 LOWER HALF BLOCK
'*' 0B0 '*' 0B0 0B0 '*' '*' 2591 LIGHT SHADE
'*' 0B1 '*' 0B1 0B1 '*' '*' 2592 MEDIUM SHADE
'*' 0B2 '*' 0B2 0B2 '*' '*' 2593 DARK SHADE
'*' 0DB '*' 0DB 0DB '*' '*' 2588 FULL BLOCK
'*' 0C4 08A 0C4 0C4 '-' '-' 2500 BOX DRAWINGS LIGHT HORIZONTAL
'*' 0B3 085 0B3 0B3 '|' '|' 2502 BOX DRAWINGS LIGHT VERTICAL
'-' '-' 088 '-' '-' '-' '-' 2574 BOX DRAWINGS LIGHT LEFT
'|' '|' 081 '|' '|' '|' '|' 2575 BOX DRAWINGS LIGHT UP
'-' '-' 082 '-' '-' '-' '-' 2576 BOX DRAWINGS LIGHT RIGHT
'|' '|' 084 '|' '|' '|' '|' 2577 BOX DRAWINGS LIGHT DOWN
'-' '-' 098 '-' '-' '-' '-' 2578 BOX DRAWINGS HEAVY LEFT
'|' '|' 091 '|' '|' '|' '|' 2579 BOX DRAWINGS HEAVY UP
'-' '-' 092 '-' '-' '-' '-' 257A BOX DRAWINGS HEAVY RIGHT
'|' '|' 094 '|' '|' '|' '|' 257B BOX DRAWINGS HEAVY DOWN
'+' 0DA 086 0DA 0DA '+' '+' 250C BOX DRAWINGS LIGHT DOWN AND RIGHT
'+' 0BF 08C 0BF 0BF '+' '+' 2510 BOX DRAWINGS LIGHT DOWN AND LEFT
'+' 0C0 083 0C0 0C0 '+' '+' 2514 BOX DRAWINGS LIGHT UP AND RIGHT
'+' 0D9 089 0D9 0D9 '+' '+' 2518 BOX DRAWINGS LIGHT UP AND LEFT
'+' 0C3 087 0C3 0C3 '+' '+' 251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
'+' 0B4 08D 0B4 0B4 '+' '+' 2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
'+' 0C2 08E 0C2 0C2 '+' '+' 252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
'+' 0C1 08B 0C1 0C1 '+' '+' 2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
'+' 0C5 08F 0C5 0C5 '+' '+' 253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
'-' 0CD 09A 0CD 0CD '-' '-' 2550 BOX DRAWINGS DOUBLE HORIZONTAL
'+' 0BA 095 0BA 0BA '|' '|' 2551 BOX DRAWINGS DOUBLE VERTICAL
'+' '+' '+' 0D5 '+' '+' '+' 2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
'+' '+' '+' 0B8 '+' '+' '+' 2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
'+' '+' '+' 0D4 '+' '+' '+' 2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
'+' '+' '+' 0BE '+' '+' '+' 255B BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
'+' '+' '+' 0C6 '+' '+' '+' 255E BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
'+' '+' '+' 0B5 '+' '+' '+' 2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
'+' '+' '+' 0D1 '+' '+' '+' 2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
'+' '+' '+' 0CF '+' '+' '+' 2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
'+' '+' '+' 0D8 '+' '+' '+' 256A BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
'+' '+' '+' 0D6 '+' '+' '+' 2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
'+' '+' '+' 0B7 '+' '+' '+' 2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
'+' '+' '+' 0D3 '+' '+' '+' 2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
'+' '+' '+' 0BD '+' '+' '+' 255C BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
'+' '+' '+' 0C7 '+' '+' '+' 255F BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
'+' '+' '+' 0B6 '+' '+' '+' 2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
'+' '+' '+' 0D2 '+' '+' '+' 2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
'+' '+' '+' 0D0 '+' '+' '+' 2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
'+' '+' '+' 0D7 '+' '+' '+' 256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
'+' 0C9 096 0C9 0C9 '+' '+' 2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT
'+' 0BB 09C 0BB 0BB '+' '+' 2557 BOX DRAWINGS DOUBLE DOWN AND LEFT
'+' 0C8 093 0C8 0C8 '+' '+' 255A BOX DRAWINGS DOUBLE UP AND RIGHT
'+' 0BC 099 0BC 0BC '+' '+' 255D BOX DRAWINGS DOUBLE UP AND LEFT
'+' 0CC 097 0CC 0CC '+' '+' 2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
'+' 0B9 09D 0B9 0B9 '+' '+' 2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
'+' 0CB 09E 0CB 0CB '+' '+' 2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
'+' 0CA 09B 0CA 0CA '+' '+' 2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
'+' 0CE 09F 0CE 0CE '+' '+' 256C BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
  0   0   0   0   0   0 081 FFFE NOT USED
  0   0   0   0   0   0 083 FFFE NOT USED
  0   0   0   0   0   0 088 FFFE NOT USED
  0   0   0   0   0   0 090 FFFE NOT USED
  0   0   0   0   0   0 098 FFFE NOT USED
ASC DOS ISO KAM LAT MAC WIN UNICODE GLYPH NAME

Rozsah dat

OKKONV normálně převádí celý vstupní soubor, někdy je ale užitečné omezit konverzi na jeho část. Parametry /H= a /F= proto lze vymezit počáteční a koncovou adresu v rámci vstupního souboru, kterou chceme zkonvertovat. Toto omezení se uplatňuje i při autodetekci vstupního kódu.

První parametr určuje počet bajtů vstupu, které se mají vynechat z překódovacího procesu, implicitní hodnota /H=0. Druhý parametr /F= udává adresu, kde má být konverze ukončena. Znaky s adresou /F= a všechny následující tedy budou beze změny zkopírovány. Implicitní hodnotou /F= je délka souboru. Chceme-li např. zkonvertovat pouze jeden desetiznakový textový řetězec, jehož adresa v souboru je 125 (počítáno od nuly), zadáme

 OKKONV /H:125 /F:135
Bez ohledu na hodnoty parametrů OKKONV nikdy nemění délku zkonvertovaného souboru.

Podpora DBF

Potřebujeme-li zkonvertovat soubor, který obsahuje mimo textu i binární data, měla by se netextová oblast vynechat. Typickým případem je konverze kódu v databázových souborech, které mají na začátku binární údaje o počtu položek, datu vytvoření atd. Tyto údaje by mohly být překódováním narušeny, proto je třeba je vynechávat pomocí parametru /H=.

Abychom nemuseli pokaždé zjišťovat velikost hlavičky konkrétního souboru (např. pomocí utility OKDUMP), je v OKKONV vestavěna podpora pro databázový formát dbIII a kompatibilní (FoxPro), která se zapíná parametrem /3 a zajišťuje automatické vynechávání hlaviček. Je-li OKKONV spuštěn s parametrem /3, automaticky si nastavuje parametr /H= na hodnotu velikosti hlavičky databáze, která je v DBF souborech uložena v osmém a devátém bajtu. Příklad zadání pro hromadné překódování všech databází v adresáři \DOSDATA:

 OKKONV /3 \DOSDATA\*.DBF /Kam \WINDATA\*.* /Win

Podpora Text602

Dosový editor Text602 fy Software602 s.r.o. ukládá údaj o použité kódové stránce do prvního řádku textu v podobě tzv. tečkového příkazu. Pokud bychom použili OKKONV ke konverzi kódu v souborech Text602, měl by být zadán parametr /6, který zajistí aktualizaci tečkového příkazu.

Při použití parametru /6 se zkoumá prvních pět znaků převáděného souboru a pokud obsahují tečkový příkaz @CT x, bude číselná hodnota x nahrazena podle zvoleného výstupního kódu takto:

 @CT 0      Kamenických
 @CT 1      Latin2
 @CT 2      KOI8           (OKKONV  tento kód nepodporuje)
 @CT 3      ISO-8859-2     (Text602 tento kód nepodporuje)
 @CT 4      Windows CP1250 (Text602 tento kód nepodporuje)
 @CT 5      Macintosh CE   (Text602 tento kód nepodporuje)

Hospodaření s pamětí

Vstupní soubor je nejprve kompletně načten do pomocné paměti, uzavřen a teprve pak se otevírá výstupní soubor. Pomocná paměť se nejprve alokuje v rozšířené paměti (XMS), po jejím vyčerpání v přídavné paměti (EMS), pak ve formě odkládacího souboru ve virtuální paměti - paměťovém disku a nakonec jako pomocný soubor na pevném disku specifikovaném v environmentu proměnnou TMP= nebo TEMP=. Pomocí parametrů /XMS= a /EMS= lze využití těchto prostředků omezit na určený počet kilobajtů (zaokrouhluje se na násobky 16KB dolů). Např. /X=0 /E=50 zakáže používání paměti XMS a limituje využití paměti EMS na 48 KB.

Hodnoty návratového kódu

 8 ... vstupní kód /Macintosh
10 ... vstupní kód /ISO-8859-2
12 ... vstupní kód /Windows-1250
14 ... vstupní kód /Latin2
16 ... vstupní kód /DOS-OEM
18 ... vstupní kód /Kamenických
20 ... vstupní kód /ASCII 7bit
22 ... vstupní kód /Tabulka=externí soubor
40 ... málo paměti, nepodporovaný procesor
42 ... chyba čtení vstupního souboru
43 ... chyba čtení nebo špatná délka externí tabulky
44 ... chyba zápisu výstupního souboru
46 ... málo místa na disku pro odkládací soubor
50 ... syntaktická chyba zadání parametrů

Abecední přehled parametrů

/A  kód ASCII 7bit
/D  kód DOS CP437
/E= omezit využití přídavné (expanded) paměti EMS na zadaný počet KB
/F= koncová adresa, dále se nekonvertuje
/H= počáteční adresa, od které se začíná konvertovat
/I  kód ISO-8859-2
/K  kód Kamenických (CP 895)
/L  kód PC Latin2   (CP 852)
/M  kód Macintosh
/N  nezobrazovat žádné pomocné služební informace (totéž co /S)
/O  nežádat o povolení k přepisu existujícího výstupního souboru
/P  vypsat podrobnější manuál programu OKKONV
/S  nezobrazovat žádné pomocné služební informace (totéž co /N)
/T  testovat vstupní kód rozborem četnosti diakritických znaků
/T= externí soubor s konverzní tabulkou
/W  kód Windows (CP 1250)
/X= omezit využití vnější (extended) paměti XMS na zadaný počet KB
/Z= definice náhradního znaku
/3  nekonvertovat hlavičky dBase3 souborů
/6  aktualizovat tečkový příkaz @CT v souborech Text602
Implicitní hodnoty parametrů:
OKKONV /H=0 /T /Z="~"