====== 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}}