====== Kódování znaků ======
{{.:document.png}} Při práci v Ubuntu se můžete setkat s problémem **kódování českých znaků**, kdy se místo určitých znaků zobrazují znaky naprosto nesmyslné, tzv. **syndrom "rozsypaného čaje"**. Problém se může týkat textových souborů, titulků ve filmu, internetových stránek nebo zpráv v internetové komunikaci. V drtivé většině pocházejí tyto "problémové" soubory z operačního systému //MS Windows//, nebo jsou způsobeny jeho používáním.
{{.:important.png}} Tento článek řeší problém se špatným zobrazením **obsahu** souborů. Pokud máte problém se zobrazením **názvu** souborů, poté máte špatně připojený diskový oddíl. Viz [[Připojení disku]].
Tento návod vám vysvětlí podstatu problému, a pomůže vám pozměnit textové soubory tak, aby zobrazovaly češtinu správně.
{{.:video.png}} Pokud máte problémy se zobrazením titulků ve filmech, čtěte článek [[České titulky ve filmech]].
{{.:pidgin-logo.png}} Pokud máte problémy s internetovou komunikací (většinou ICQ) v programu Pidgin, čtěte článek [[Pidgin]].
{{.:IconGlobe.png}} Pokud máte problémy se zobrazením internetových stránek ve svém prohlížeči, jsou to lajdácky napsané stránky. Internetové stránky lze velice jednoduše napsat tak, že s jejich zobrazením nejsou problémy na žádném operačním systému. Kontaktujte jejich autora a upozorněte ho. Pokud HTML stránky přímo tvoříte a máte problém se zobrazením jejich //zdrojového kódu//, postupujte úplně stejným způsobem, jako je uveden níže (HTML stránky jsou obyčejné textové soubory). Nezapomeňte v hlavičce stránky specifikovat nové kódování.
====== Příčina problému ======
Tento problém má historické důvody. V minulosti nebylo možné, aby všechny znaky světa byly obsaženy v jediné [[http://cs.wikipedia.org/wiki/Znakov%C3%A1_sada|znakové sadě]]. Proto si nemohl Japonec, Francouz a Čech poslat textový soubor s národními znaky, aby to u každého vypadalo stejně. Z tohoto důvodu vznikla znaková sada [[http://cs.wikipedia.org/wiki/Unicode|Unicode]] (a jeho zápis [[http://cs.wikipedia.org/wiki/UTF-8|UTF-8]]), která tyto hranice bourá, a uvedené možnosti poskytuje. **UTF-8** je moderní a perspektivní lék na všechny problémy s kódováním znaků, které kdy v minulosti byly, a proto jej i Ubuntu používá jako výchozí kódování znaků. Bohužel microsoftí systémy (včetně nejnovějších Windows Vista) pro ukládání textových souborů stále upřednostňují historické znakové sady se všemi jejich neřestmi - v ČR (a SR) je to sada **windows-1250**. Nezbývá tedy, než si povzdychnout nad přístupem Microsoftu a problém ručně vyřešit.
{{.:info.png}} Pokud budete mít svoje soubory v kódování UTF-8, budou se vám správně zobrazovat pod Ubuntu i u většiny programů pod Windows. Pokud budete mít svoje soubory ve windows-1250, budou se vám zobrazovat správně jen pod českými Windows, nikde jinde. Kódování UTF-8 lze totiž v souboru většinou rozeznat, kódování windows-1250 nikoliv.
====== Řešení problému ======
Ubuntu nám poskytuje množství nástrojů, které nám dovolí převést textové soubory z kódování Windows do univerzálního UTF-8. Lze použít jak grafický "klikací" způsob, tak využít příkazů v [[Terminál|Terminálu]], které umožňují převod mnoha takových souborů najednou.
{{.:info.png}} Kódování UTF-8 se v programech většinou označuje ''utf8'' nebo ''UTF-8''. Kódování windows-1250 se většinou označuje ''windows-1250'', ''win-1250'' nebo ''cp1250''.
====== Oprava češtiny ======
===== Textovým editorem =====
{{.:navigate.png}} Spusťte si **Aplikace → Příslušenství → Textový editor**.
Zvolte //Soubor → Otevřít//. Rozviňte nabídku //Kódování znaků// a zvolte //Přidat nebo odstranit//.
{{ .:gedit-encoding-1.png }}
V pravé části tabulky si pomocí tlačítek //Přidat// a //Odstranit// ponechte často používané nestandardní kódování, nejčastěji vám stačí pouze ''Středoevropské WINDOWS-1250''. Stiskněte //OK//.
{{ .:gedit-encoding-2.png }}
Označte požadovaný soubor, a v nabídce //Kódování znaků// zvolte //Středoevropské (WINDOWS-1250)//. Poté //Otevřít//.
{{ .:gedit-encoding-3.png }}
Soubor by měl být nyní zobrazený správně v češtině. Zvolte //Soubor → Uložit jako//, jako název souboru ponechte výchozí název (přepíše se původní soubor), a v nabídce //Kódování znaků// vyberte //Aktuální locale (UTF-8)//. Pak //Uložit//.
{{ .:gedit-encoding-4.png }}
Soubor jste si nyní převedli z windows kódování do univerzálního kódování. Už byste s ním neměli mít nikde problémy.
===== Příkazem cstocs =====
[[Přidávání zdrojů|Přidejte si]] zdroj //universe// a [[Instalace programů|nainstalujte si]] balík ''cstocs''.
Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem. Kódování souboru potom převedete příkazem:
cstocs -i 1250 utf8 soubor.txt
stejně tak lze převést více souborů naráz
cstocs -i 1250 utf8 soubor1.txt soubor2.txt
nebo třeba všechny textové soubory v aktuálním adresáři
cstocs -i 1250 utf8 *.txt
Dejte si pozor, ať daný příkaz nespustíte na daný soubor více než jednou. Pro jistotu mějte vždy uchovanou kopii stranou.
===== Příkazem recode =====
//Recode// je ve standardních zdrojích Ubuntu, stačí tedy pouze [[Instalace programů|nainstalovat]] balík ''recode''. Dle mých zkušeností ale není tak spolehlivý jako příkaz ''cstocs''.
Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem. Kódování souboru potom převedete příkazem:
recode 1250..utf8 soubor.txt
stejně tak lze převést více souborů naráz
recode 1250..utf8 soubor1.txt soubor2.txt
nebo třeba všechny textové soubory v aktuálním adresáři
recode 1250..utf8 *.txt
Samozřejmě si vždy uchovejte kopii stranou, kdyby se při převodu něco nepovedlo.
===== Příkazem iconv =====
Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem. Kódování souboru potom převedete příkazem:
iconv -f windows-1250 -t utf8 nový_soubor.txt
===== Příkazem convmv =====
Program najdete ve stejnojmenném balíku ''convmv''.
Otevřete si [[Terminál]].\
Převedení všech názvů souborů a adresářů uvnitř adresáře ''data'' v domovské složce z ISO-8859-2 do UTF-8:
convmv -f iso-8859-2 -t utf8 -r --notest --replace ~/data
Opravení diakritiky v souborech pojmenovaných „®esky“:
convmv -f latin2 -t utf8 nazev_souboru
Změna názvu všech souborů z kódování windows-1250 na UTF-8:
find . -type f -exec convmv -f cp1250 -t utf-8 {} --notest \;
===== Příkazem enca =====
Nainstalujte si program ''enca''.
Otevřete si [[Terminál]] a přepněte se do adresáře s požadovaným souborem.
Detekce znakové sady
enca dopis.txt
Díky automatické detekci není nezbytně nutné uvádět výchozí znakovou sadu (detekce může ovšem selhat, nespoléhejte na ni!).
enca -x iso-8859-2 dopis.txt
Převod souboru do znakové sady, kterou máte na svém systému, provedete parametrem -c :
enca -c dopis.txt
====== Odkazy ======
* [[http://www.linuxexpres.cz/praxe/kodovani-textu-na-pocitaci|Kódování textu na počítači]]
* [[http://www.linux.com/articles/58689|Convert file names to a different encoding with convmv]] {{.:en.png}}
* [[http://www.linux.com/feature/141378|Linux tools to convert file formats]] {{.:en.png}}