\documentclass[11pt,a4paper]{article}
\usepackage[czech]{babel}  % nastavení češtiny
\usepackage[cp1250]{inputenc}  % kódování textů
\usepackage{graphicx}  % práce s obrázky
\usepackage{wrapfig}  % pro obtékání textu kolem obrázků a tabulek
\usepackage{indentfirst}  % pro odsazení prvního odstavce
\usepackage[obeyspaces]{url}  % pro odkazy v seznamu literatury
\usepackage[top=3cm, bottom=3cm, right=2.5cm, left=2.5cm]{geometry}
\usepackage{cmap} % pro správné mapování znaků v pdf na Unicode
\usepackage[T1]{fontenc} % totéž
\usepackage{semestr}  % styl pro semestrální práce
\begin{document}
\catcode`\-=12  % pro vypnuti aktivniho znaku '-' pouzivaneho napr. v \cline
\def\refname{Literatura}  % prejmenovani Reference

\newcommand{\skola}{ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V~PRAZE} 
\newcommand{\fakulta}{FAKULTA STAVEBNÍ}
\newcommand{\obor}{OBOR GEODÉZIE A~KARTOGRAFIE}
\newcommand{\katedra}{KATEDRA MAPOVÁNÍ A~KARTOGRAFIE}
\newcommand{\predmet}{Kartografická polygrafie a~reprografie}
\newcommand{\nazevprace}{Konverze textových formátů}
\newcommand{\typprace}{semestrální práce}
\newcommand{\skolnirok}{$2008/09$}
\newcommand{\studijniskupina}{skup.}
\newcommand{\prvniautor}{Martin Setnička}
\newcommand{\druhyautor}{Michal Šatava}
\newcommand{\datumodevzdani}{29.\,3.\,2009}

% -------<<< titulní stránka >>>-------
\begin{center}
    \large{\textbf \skola} \\
    {\textbf \fakulta} \\
    \vskip 2mm
    \normalsize{\obor \\ \katedra}
    \vskip 5mm
    \includegraphics[width=2cm]{lev.pdf}
    \vskip 3cm {\Huge \bfseries \nazevprace}
    \vskip 3mm {\Large \typprace}
    \vskip 3cm {\LARGE \prvniautor}
    \vskip 3mm {\LARGE \druhyautor}
\end{center}

\vfill

V~Praze dne \datumodevzdani \hfill \predmet

\pagestyle{empty} % první stránka bude bez čísla
\newpage    % ukončí stránku
\setcounter{page}{1} % další stránky číslovat od jedné
\pagestyle{plain} % dole uprostřed stránky

% -------<<< 1. Kapitola >>>-------
\section*{Úvod} % uvod a zaver necislujeme
\label{uvod}
Následující text by měl především vyložit základní pojmy z~oblasti vyjadřování textu v~elektronické podobě, pojednat o~problémech při čtení a konverzi textových formátů a nastínit cestu, kterou se ubírat při jejich řešení.

\section{Základní pojmy}
Terminologie je dosti nejednoznačná, proto uvádím krom základních pojmenování i ostatní jména v~závorce.

\subsection*{Dokument}
Soubor obsahující \emph{vlastní text} a \emph{formátovací značky}. Podle zápisu obsahu se jedná o~\emph{textový} nebo \emph{binární formát}. Formát je popsán příponou a nebo v~záhlaví souboru.

\subsection*{Textový formát}
Každému \emph{znaku} (symbolu) je přiřazeno celé nezáporné číslo, podle dané \emph{znakové sady} (kódová tabulka, kód). Toto číslo je podle \emph{kódovacího schématu} (charset) zapsáno n celými byty  (podle velikosti znakové sady). Nezabývá se vizuální prezentací znaku (\emph{glyf})

Např: HTML, XML, PostScript, TeX, CPP, RTF, CSV, SVG, ...

\subsection*{Binární formát}
Alespoň část informací je vyjádřena jinak než v~textovém formátu.

Např: DOC, ODT, Text602, ... 

\section{Textový formát}

\subsection{Jednobytové znakové sady}

\subsubsection{US-ASCII}
\emph{ASCII} je zkratka pro American Standard Code for Information Interchange (americký standardní kód pro výměnu informací).

Jde o~první znakovou sadu. Sedm bitů definuje znaky anglické abecedy a jiné znaky používané v~informatice. Osmý bit je nulový. Obsahuje tedy 128 znaků (viz Obr. \ref{ASCII}).

\begin{figure}[ht]
  \begin{center}
    \includegraphics[width=10cm]{ASCII_Code_Chart.png}  %vložit obrázek
  \end{center}
  \caption{Tabulka ASCII kódů \cite{wiki}}
  \label{ASCII}
\end{figure}

\subsubsection{8-bitová kódování (extended text)}
Rozšíření využívající osmého bitu US-ASCII kódu, která obsahují dalších 128 kódů. Jsou bohužel i případy, kdy prvních 128 znaků není totožných s~US-ASCII.

Rozšířený kód je přesto malý na to, aby pojmul třeba jen evropské národní abecedy.
Vzniklo tedy mnoho znakových sad s~různým významem kódů nad 127 (Viz kapitolu \ref{znakove_sady}).

\textbf{Výhody}

Jednoduché kódování (pevná šířka znaku - 8bit).
Malý objem dat.

\textbf{Nevýhody}

Malý rozsah znakové sady.

Existují stovky jednobytových sad (ISO, ČSN, další závislé na platformě, ...).

\subsection{Vícebytové znakové sady - Unicode}
S~rozvojem Internetu je potřeba výměny dokumentů mezi různými platformami a různými národními jazyky. Řešením je vícebytová znaková sada (dále jen \emph{Unicode}).

Do její přípravy se bohužel najednou pouštějí dvě různé organizace:

\begin{itemize}
  \item ISO (International Organization for Standardization) od 1989,\\
        znaková sada ISO/IEC~10646, ve zkratce \emph{UCS} (Universal Character Set).
  \item Unicode (Unicode Consortium) od 1990, znaková sada Unicode, ve zkratce \emph{Unicode}.
\end{itemize}
 
Naštěstí obě organizace od roku 1991 spolupracují.
V~současnosti jsou číselné hodnoty (code points) jednotlivých znaků identické.
Liší se kódovací schéma.

\subsubsection*{Vývoj Unicode}
1991 - 16bitová znaková sada: \emph{BMP} (Basic Multilingual Plane)

1996 - rozšíření na 32 bitů (používáno 21 bitů, tj. asi milion znaků)

\subsubsection*{Kódovací schéma}
\emph{UTF-32}: každý znak - 4 byty

\emph{UTF-16}: každý znak v~BMP - 2 byty, ostatní znaky - 4 byty

\emph{UTF-8}: proměnná délka 1-6 bytů na znak (prakticky 1-4)

\emph{Další}: UCS-2, UCS-4, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE

\subsubsection*{UTF-8}

\textbf{Výhody}

Znaky US-ASCII se kódují stejně => kompatibilita.

Pro akcentované znaky stačí 2 byty => relativní úspora dat.

\textbf{Nevýhody}

Znaky nemají stejnou délku => není možné skočit o~určitý počet znaků.

\subsection{Znakové sady pro češtinu}
\label{znakove_sady}
Pojmenování charsetů se řídí Internet Assigned Numbers Authority (IANA).

V~závorce jsou uvedeny alternativní označení.

\begin{enumerate}
  \item \emph{ISO-8859-2} (ISO Latin 2, IBM912):
        Osmibitové kódování češtiny v~UNIXových systémech. Specifikováno normou ISO-8859-2 (z~roku 1987).
  \item \emph{Bratři Kameničtí} (KEYBCS2, CP895, MJK)
  \item \emph{Cork} (T1):
        Kódování Cork používá většina evropských TUG (národní TeX Users Groups) pro TeXovské mezinárodní písmo T1.
  \item \emph{CP852} (IBM852, PC Latin 2, PC L2):
        Osmibitové kódování češtiny v~systému MS-DOS (Konzole v~MS Windows).
        Toto kódování má všechny tisknutelné znaky sady ISO-8859-2 (ISO Latin 2), diakritická písmenka jsou však na jiných pozicích.
  \item \emph{KOI8-ČS} (KOI8ČS):
        Toto kódování bylo používáno na starých terminálech. Např. program T602 stále dovoluje jeho používání.
        Obsahuje "ch" jako zvláštní znak.
  \item \emph{Mac OS Central European} (MacCE, CE, Mac, apple-ce, x-mac-ce...):
        Tuto znakovou sadu používá lokalizovaný Mac OS (především počítače Apple Macintosh).
  \item \emph{Windows-1250} (CP1250, WinCS, WinEE):
        Téměř shodné s~ISO Latin~2. Čtrnáct znaků je však na jiných pozicích. Písma s~koncovkou CE.
  \item \emph{Unicode} (UTF-8)
\end{enumerate}

\subsection{Problémy textového formátu}
Různé řídící znaky v~různých operačních systémech\\
 (např. konec řádku Unix - LF, Mac - CR, MS - CR+LF).

Různé znakové sady s~různým rozsahem a různá kódovací schémata (charset).

\subsubsection*{Řešení}
U~dokumentů uvádět (např. v~hlavičce HTML) použitý charset.

Používat software umožňující rozpoznání a konverzi.

Snaha o~sjednocení => jednotný národní charset, jednotný světový Unicode.

\section{Binární formát}

\subsubsection*{Výhody}
Vhodné pro okamžité zpracování (formát dat shodný s~tvarem v~operační paměti).

V~případě poškození části dat těžko opravitelné.

\subsubsection*{Nevýhody}
Možnost utajení formátu.

Nutnost použití specifického programu.

Složitější interpretace, viry, ...
   
\section{Otevřené a uzavřené formáty}

\subsubsection*{Otevřený formát}
Jeho specifikace je volně dostupná.

Většinou lépe přenositelný (umí ho číst více programů ve více operačních systémech).

Je prostředkem pro výměnu informací, efektivní využití a zpracování dat.

Např.: ODF, prostý text, ...

\subsubsection*{Uzavřený formát}
Umožňuje získat monopol pro jeho zpracování a zároveň silně omezuje možnosti využití uložených dat. Např. MS Office. 

\section{Konverze formátů}
Často se dostaneme do situace, kdy požadujeme data ve specifickém formátu, který se liší od toho, který máme k~dispozici. Např. spolupráce programů, z~nichž každý pracuje s~jiným formátem.

Konverzí formátu se rozumí v~ideálním případě jeho změna bez ztráty, nebo nabytí informačního obsahu.

To zdaleka ne vždy platí. Viz kapitolu \ref{problemy_konverze}.

\subsection{Rozpoznání (čtení)}
Pro správnou konverzi je nutné znát formát souboru, který chceme převést.

Pro textový formát je podstatné v~jakém je kódování a z~jakého operačního systému.

V~případě binárního souboru nám napoví přípona. Pokud ji soubor nemá musíme použít speciální program. Nejkrajnější nouzové řešení je pak zkoušení, který program soubor přečte + editace přípony.

\subsection{Provedení konverze}
\subsubsection{Speciálním programem}
Test mnoha programů pro změnu kódování

\texttt{http://vorisekd.wz.cz/test.htm}

Jsou i programy pro konverzi zpřístupněné on-line

\texttt{http://media-convert.com/}, \texttt{http://www.zamzar.com/}

\subsubsection{Službami Open a Save (As) běžných programů}
Např. pomocí OpenOffice.org lze pomocí \emph{uložit jako} konvertovat DOC na ODT a opačně. V~textovém editoru PSPad lze editačními nástroji měnit charset i typ zalamování řádků.

Tento postup je však vhodný pro konverzi velkého množství souborů až se současným použitím maker.
Více např na \texttt{http://www.openoffice.cz/navody/}.

\subsection{Problémy konverze}
\label{problemy_konverze}
\subsubsection{Různý rozsah znakových sad}
U~textových formátů se setkáváme s~problémem vyjádření znaků, které nemají ve výstupním formátu ekvivalent. Řešením můžou být:

\textbf{ESC sekvence a HTML kódy:}
Jeden nebo několik znaků následujících znak $ESC$ (v~HTML $\&$) nejsou interpretovány jako ASCII kódy.\\
Např. Ä můžeme v~HTML zapsat jako $\&Auml;$.

\textbf{Transliterace:} Např. \texttt{ť} lze aproximovat pomocí \texttt{t} nebo \texttt{t'}.

\subsubsection{Textové formátovací značky}
... užívají pouze základní US-ASCII, takže zde problémy převážně nejsou.

\subsubsection{Binární formát}
Zde je především obtížná interpretace vstupního souboru a řešením může být snad jen zjednodušení požadavků na výstupní formát, nebo volba kvalitnějšího konverzního nástroje. V~případě uzavřených formátů jsou problémy obecně častější a závažnější.


\section*{Závěr}
\label{zaver}
Text tohoto dokumentu je samozřejmě jen úvodem do problematiky. Obsahuje však dost odborných pojmů, které čtenáři pomůžou při studování další literatury.

Věřím, že tento dokument poslouží i k~řešení praktických problémů s~kódováním a konverzí.

\label{literatura}
\begin{thebibliography}{9}
  \bibitem{rybicka} Rybička, J.: WWW stránky, [online], [cit. 2009-03-29], URL: \url{<http://old.mendelu.cz/~rybicka/>}
  \bibitem{roubal} Herout, P.: WWW stránky, [online], [cit. 2009-03-29], URL: \url{<http://www-kiv.zcu.cz/~herout/>}
  \bibitem{wiki} Wikipedia: WWW stránky, [online], [cit. 2009-03-29], URL: \url{<http://en.wikipedia.org/>}
\end{thebibliography}
\end{document} %konec souboru
