Textový soubor
Textový soubor je počítačový soubor složený výhradně ze znaků. Kromě tisknutelných znaků a mezer mohou textové soubory obsahovat omezenou sadu řídicích znaků, zpravidla pouze znaky konce řádků a tabulátory.
Soubory, které obsahují jiná data než znaky, nazýváme binárními. V binárních datech mohou mít některé byty nebo skupiny bytů význam počtu, velikosti, pozice v souboru, barvy, tónu, napětí, posunutí či strojové instrukce. Jakákoli binární data lze (za cenu zvětšení souboru) různými způsoby vyjádřit v textovém tvaru, například pomocí kodéru base64. Soubory obsahující obrázky, audio, video, spustitelné programy a archivní soubory jsou kvůli úspoře místa a pro rychlejší zpracování zpravidla binární.
Textové dokumenty, které pro formátování textu používají pouze znaky konce řádku, mezery a tabulátory, označujeme jako prostý text – obvykle se jim dávají jména s příponou txt
. Jak prostý text, tak textové soubory obecně lze vytvářet a upravovat textovými editory. K vytvoření bohatěji formátovaného textu slouží textové procesory, které do souborů ukládají kromě textu i informace o použitém písmu, rozvržení textu na stránce, barvách, umožňují vkládat obrázky apod. Kvůli těmto přidaným informacím obvykle výsledný dokument není textovým souborem. Vložení přídavných informací při zachování textového formátu umožňují značkovací jazyky, které se používají například pro vytváření webových stránek. Textový formát mají také příkazové a dávkové soubory a zdrojové kódy počítačových programů a mohou jej mít i konfigurační soubory a datové soubory.
Textový soubor lze považovat za druh kontejneru. Obvyklý kontejner však definuje globální struktury souboru, do kterých se vkládají jednotlivé části (např. video, audio a titulky), zatímco fakt, že soubor je textový, určuje způsob ukládání těch nejmenších složek dat.
Členění na řádky
Textový soubor není prostou lineární posloupností znaků, ale je členěn na jednotlivé řádky. U historických operačních systémů byl řádek reprezentován pevným počtem znaků (nejčastěji 80 podle počtu pozic na nejrozšířenějších děrných štítcích) nebo záznamem proměnné délky, který začínal údajem o délce. U moderních operačních systémů mají řádky proměnnou délku a každý řádek je zakončen znakem konce řádku:
Znak konec souboru
Starší operační systémy (například CP/M) neudržovaly délku souboru v bytech, ale v blocích (záznamech, sektorech). Aby mohl textový soubor končit jinde než na konci bloku, ukládal se na konec souboru znak konce souboru (End of File – EOF). V novějších operačních systémech se znak konce souboru uplatňuje pro ukončení souboru čteného z klávesnice; v operačním systému MS-Windows a DOS se používá znak s kódem 26 (Ctrl-Z), v Unixech znak s kódem 4 (Ctrl-D).
Kódování textových souborů
Podle použitého kódování mohou být uvnitř textového souboru jednotlivé znaky reprezentovány
- jedním bytem - např. ASCII, nebo 8bitové znakové sady jako Windows-1250
- tato možnost je nevýhodná pro mezinárodní spolupráci, protože neexistuje způsob jak spolehlivě poznat, v kterém ze desítek používaných osmibitových kódování je daný textový soubor; např. pouze pro češtinu se používalo několik osmibitových kódování (ISO8859-2, Windows-1250, kódování Kamenických, ...)
- pevným počtem bytů - např. UTF-32 (čtveřice bytů) nebo UCS-2 (dvojice bytů)
- u těchto kódování hrozí problémy s nejednoznačností pořadí bajtů, protože různé systémy mohou používat různou endianitu
- posloupností bytů - např. UTF-8, UTF-16, nebo GB18030
- taková kódování mohou být zpětně kompatibilní s ASCII (UTF-8, GB18030)
- kódování UTF-16 je nadmnožinou UCS-2, pro běžné texty se chová jako kódování s pevným počtem bajtů, včetně problémů s endianitou
Po roce 2000 se stále častěji používá znaková sada ISO/IEC 10646 (Unicode), která umožňuje reprezentovat všechny v současnosti běžně používané znaky, včetně znaků čínského, japonského a korejského písma a jiných orientálních skriptů (indické skripty jako sanskrt, dévanágarí, tibetské skripty atp.). Pro kódování se používá nejčastěji UCS-2 nebo UTF-16 (MS-Windows, SMS), kde jeden znak je tvořen dvěma případně čtyřmi byty, nebo UTF-8 (Unixy, WWW, e-mail), kde znak je tvořen posloupností 1–4 bytů. Kvůli existenci kombinačních znaků není vyjádření znaků s diakritikou jednoznačné: např. český znak „ř“ (r s háčkem) může být vyjádřen jedním znakem (U+0159) nebo složením znaku r (U+0072) a znaku háček (U+030C).
Na Unicode je rovněž vázaný čínský standard GB18030, který obsahuje všechny jeho znaky. Zhlediska kódování obsahuje více znaků pro "privátní použití", což je v drtivě většině případů nepodstatné.
Textová reprezentace binárních dat
Protože pro zpracování textových souborů existuje velké množství nástrojů, a textová data lze snadno přenášet, bylo vyvinuto množství způsobů pro reprezentaci binárních dat v textové podobě. Mezi nejstarší patří Intel HEX, který se používá hlavně pro zápis obsahu paměti. Významným oborem, který podnítil vývoj textových reprezentací binárních dat byly počítačové sítě a telekomunikace, především e-mail. Po starších formátech specifických pro jednotlivé operační systémy, jako je uuencode používaném v unixových operačních systémech, a BinHex používaných na počítačích Macintosh, přišel standard MIME s kódováním base64 pro binární soubory a quoted-printable pro textové soubory obsahující i jiné než ASCII znaky.
Obsah textových souborů
Obsah textových souborů může být různým způsobem strukturován. Pro ukládání tabulkových dat se používají relativně jednoduché CSV soubory členěné na řádky a položky. O něco složitější je struktura konfiguračních souborů ve formátu INI. Pomocí standardu MIME lze textově reprezentovat multimediální soubory. Soubory používající značkovací jazyky mohou být velmi složité, popsané gramatikou využívající rekurze. Jiným příkladem reprezentace složité spojové datové struktury pomocí poměrně jednoduchého textového souboru je formát GEDCOM pro výměnu genealogických dat.
Externí odkazy
- Obrázky, zvuky či videa k tématu textový soubor na Wikimedia Commons
- Prostý text
- Textový editor
- Značkovací jazyk
- HTML
- XML
- CSV
- Zdrojový kód
- C
- Verzování, Git
- Diff – nástroj pro porovnávání textových souborů